python面试题

第一章:python基础


数据类型:


字典

1.1 现有字典 dic = {'a': 24, 'g': 52, 'i': 12, 'k': 33} 请按字典中的 value 值进行排序?

dic = {'a': 24, 'g': 52, 'i': 12, 'k': 33}
a = sorted(dic.items(), key=lambda x: x[1])

1.2 说一下字典和json的区别?

字典和json样式十分相似,字典是一种数据结构,json是一种数据的表现形式(格式),字典的key值只要是能hash的就行,json的必须是字符串

字典可以用单引号,而在json中得用双引号,所以如果想将一个字典以json格式传递时,记得将单引号都替换成双引号

1.3 什么是可变、不可变类型?

可变不可变指的是内存中的值是否可以被改变,
不可变类型指的是对象所在内存块里面的值不可以改变,有数值、字符串、元组;
可变类型则是可以改变,主要有列表、字典。

1.4 存入字典里的数据有没有先后排序?

存入的数据不会自动排序,可以使用sort函数对字典进行排序。


1.5 字典推导式?

dict = {key: value for (key, value) in iterable}

1.6 现有字典 d = {'a': 24, 'g': 52, 'I': 12, 'k': 33 }请按字 典中的 value 值进行排序?

d = {'a': 24, 'g': 52, 'I': 12, 'k': 33}
a = sorted(d.items(), key=lambda x: x[1]))

企业面试题


1. 如何对一遍文章进行敏感词替换, 加入有1000个敏感词

sensitive.txt文件结构

渣男|心机婊|好色
import re


def read_txt(file_name):
    # 读取txt文件
    with open(file_name, 'r') as file_to_read:
        lines = list()
        # 打开文件, 一次读一行
        for line in file_to_read.readlines():
            if line is not None:
                # 符合条件的存入列表
                lines.append(line.strip('\n'))
    return lines


def sensitive_words(file_name):
    with open(file_name, 'r', encoding='utf-8') as f:
        ls = f.read().split('|')

    return ls


def shield_sensitive_word(file_name, sensitive_name):
    # 屏蔽敏感词
    articles = read_txt(file_name)
    sensitive_word = sensitive_words(sensitive_name)
    with open('2.txt', 'wt', encoding='utf-8') as f:
        for pattern in articles:
            a = pattern
            for i in sensitive_word:
                match = re.search(i, pattern)
                if match:
                    a = re.sub(i, '*', pattern)
                    # a = pattern.replace(i, '***')
                    print('有敏感词汇{}'.format(i))

            f.write('%s%s' % (a, '\n'))


if __name__ == "__main__":
    shield_sensitive_word('1.txt', 'sensitive.txt')

2. 以下代码输出结果

from operator import attrgetter
from itertools import groupby

class Student:
    def __init__(self, id, name):
        self.id = id
        self.name = name

    def __repr__(self):
        return repr((self.name, self.id))


data_list = [Student(1, 'xiao'), Student(3, 'xiaoming'), Student(4, 'xiaohu'), Student(6, 'xiaohua')]
print(data_list) # [('xiao', 1), ('xiaoming', 3), ('xiaohu', 4), ('xiaohua', 6)]
data_list.sort(key=attrgetter('id', 'name'))  # 对data_list的元素根据id和name进行排序
print(data_list)
data_group_list = [list(k) for g, k in groupby(data_list, key=lambda x:x.id)]

print(data_group_list)

输出结果

[[('xiao', 1)], [('xiaoming', 3)], [('xiaohu', 4)], [('xiaohua', 6)]]
posted @ 2019-10-24 00:34  cjw1219  阅读(257)  评论(0编辑  收藏  举报