第四章 4 数据类型-字典 练习题
作者:互联网
第四章 4 数据类型-字典 练习题
基础知识
1 字典中多个元素之间使用____________分隔开,每个元素的“键”
与“值”之间使用________分隔开
逗号,冒号
2 字典对象的___________方法可以获取指定“键”对应的“值”
,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回 None
get()
3 字典对象的_____________方法返回字典中的“键-值对”列表
items()
4 字典对象的____________方法返回字典的“键”列表
keys()
5 字典对象的______________方法返回字典的“值”列表
values()
6 已 知 x = {1:2} , 那 么 执 行 语 句 x[2] = 3 之 后 , x 的 值 为
{1: 2, 2: 3}
7 已 知 x = {‘a’:‘b’,‘c’:‘d’} , 那 么 表 达 式 ‘a’ in x 的 值 为
True
8 已 知 x = {‘a’:‘b’,‘c’:‘d’} , 那 么 表 达 式 ‘b’ in x 的 值 为
False
9 已知 x = {‘a’:‘b’,‘c’:‘d’},那么表达式 ‘b’ in x.values() 的值为
True
10 已知 x = {1:2, 2:3},那么表达式 x.get(3, 4) 的值为____
4
11 已知 x = {1:2, 2:3},那么表达式 x.get(2, 4) 的值为______
3
12 表 达 式 dict(zip([1, 2], [3, 4])) 的 值 为
{1:3,2:4}
13 已知 x = {1:1},那么执行语句 x[2] = 2 之后,len(x)的值为
2
14 已知 x = {1:1, 2:2},那么执行语句 x[2] = 4 之后,len(x)的值为
2
15 已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x) 的值为___________
6
16 已知 x = {1:2, 2:3, 3:4},那么表达式 sum(x.values()) 的值为
9
17 已知字典 x = {i:str(i+3) for i in range(3)},那么表达式 sum(x)
的值为______
3
18 已 知 字 典 x = {i:str(i+3) for i in range(3)} , 那 么 表 达
式 ’’.join(x.values()) 的值为____________
'345'
19 已 知 字 典 x = {i:str(i+3) for i in range(3)} , 那 么 表 达 式
sum(item[0] for item in x.items()) 的值为___________
3
20 已 知 字 典 x = {i:str(i+3) for i in range(3)} , 那 么 表 达
式 ’’.join([item[1] for item in x.items()]) 的值为_____________
345
[进阶拓展]
1 现有字典 dict={‘a’:24,‘g’:52,‘i’:12,‘k’:33}
请按字典中的 value值进行排序?
dict1 = {'y': 24, 'g': 52, 'i': 12, 'k': 33}
dict2 = dict(sorted(dict1.items(), key=lambda x: x[1],reverse= True))
print(dict2)
print(dict1)
2 说一下字典和 json 的区别?
抄答案:....
字典是一种数据结构,json 是一种数据的表现形式,字典的 key 值只要是能 hash 的就行,
json 的必须是字符串
3 存入字典里的数据有没有先后排序?
存入的数据不会自动排序,可以使用 sort 函数对字典进行排序。
dict1 = {'y': 24, 'g': 52, 'i': 12, 'k': 33}
dict2 = dict(sorted(dict1.items(), key=lambda x: x[1],reverse= True))
dict3 = dict(sorted(dict1.items(), key=lambda a:a[1],reverse = True))
print(dict2)
print(dict3)
5 现有字典 d={‘a’:24,’g’:52,’l’:12,’k’:33}请按字 典中的 value
值进行排序?
d = {'a': 24, 'g': 52, 'l': 12, 'k': 33}
d1=dict(sorted(d.items(), key = lambda x :x[1], reverse=True))
print(d1)
6 描述下 dict 的 item()方法与 iteritems()的不同
字典的 items 方法作用:是可以将字典中的所有项,以列表方式返回。因为字典是无序的,
所以用 items 方法返回字典的所有项,也是没有顺序的。
字典的 iteritems ,python 3.10没有这个方法,已经废除了.
7 求结果
v = dict.fromkeys(['k1','k2'],[])
v['k1'].append(666)
print(v) #{'k1': [666], 'k2': [666]}
v['k1'] = 777
print(v)#{'k1': 777, 'k2': [666]}
8 假设有列表 a = [‘name’,‘age’,‘sex’]和 b = [‘Dong’, 38,‘Male’],
请使用一个语句将这两个列表的内容转换为字典,并且以列表 a 中的
元素为“键”,以列表 b 中的元素为“值”,这个语句可以写为
a = ['name', 'age', 'sex']
b = ['dong', 38, 'male']
dic = {}
dic = dict(zip(a, b))
print(dic)
[面试真题]
1 假定有两个字典 a 和 b,如下:
a = {'eyes': 8, 'the': 5, 'look': 4, 'into': 3, 'my': 3, 'around': 2, "you're": 1, "do
n't": 1, 'under': 1, 'not': 1}
b = {'eyes': 1, 'looking': 1, 'are': 1, 'in': 1, 'not': 1, 'you': 1, 'my': 1, 'why': 1}
请写一个函数,统计两个字典中每个 key 的加和值。输出如下:
{'eyes': 9, 'the': 5, 'look': 4, 'into': 3, 'not': 2, 'around': 2, "you're": 1, "don't":
1, 'in': 1, 'why': 1,
'looking': 1, 'are': 1, 'under': 1, 'you': 1}
c=dict(a.items())
print(c)
for i in b:
if i not in c:
c.update({i: b[i]})
else:
c[i] += 1
print(c)
2 请使用 Python 语言实现:你有一个统计姓名年龄的二维 list
age_list,格式如下 [[ “姓名”,“年龄” ]…..],如果两行的姓名和年
龄均相同,视为相同的人,其他均视为不同的人。
(1)请统计所有人的平均年龄
age_list = [['张三', 25], ['李四', 26],
['王五', 27], ['马六', 28],
['赵八', None], ['马六', 28],
['王五', 27], ['刘七', None],
['王五', 27], ['马六', 20],
['王五', 27], ['刘七', None],
]
temp_lst2 = [] # 建立一个空表
for i in age_list: # 将非重复排除后,加入空表
if i not in temp_lst2:
temp_lst2.append(list(i))
count = 0 # 开始计算非None人员的平均年龄
sum_age = 0
for i in temp_lst2:
if i[1] is not None:
count += 1
sum_age += i[1]
pingjun_age = int(sum_age / count)
print(f'非None人员的平均年龄是{pingjun_age}')
count = 0 # 开始计算包含None人员的平均年龄
sum_age = 0
for i in temp_lst2:
if i[1] is not None:
count += 1
sum_age += i[1]
if i[1] is None:
count += 1
sum_age += int(pingjun_age * 1.2)
pingjun_age = int(sum_age / count)
print(f'包含None人员的平均年龄是{pingjun_age}')
print(temp_lst2)
(2)如果年龄字段有一部分值缺失,年龄为 None ,这些人的年龄可认为比其他可统
计部分的年龄高 20%,请统计所有人的平均年龄。
age_list = [['张三', 25], ['李四', 26],
['王五', 27], ['马六', 28],
['赵八', None], ['马六', 28],
['王五', 27], ['刘七', None],
['王五', 27], ['马六', 20],
['王五', 27], ['刘七', None],
]
temp_lst2 = [] # 建立一个空表
for i in age_list: # 将非重复排除后,加入空表
if i not in temp_lst2:
temp_lst2.append(list(i))
count = 0 # 开始计算非None人员的平均年龄
sum_age = 0
for i in temp_lst2:
if i[1] is not None:
count += 1
sum_age += i[1]
pingjun_age = int(sum_age / count)
print(f'非None人员的平均年龄是{pingjun_age}')
count = 0 # 开始计算包含None人员的平均年龄
sum_age = 0
for i in temp_lst2:
if i[1] is not None:
count += 1
sum_age += i[1]
if i[1] is None:
count += 1
sum_age += int(pingjun_age * 1.2)
pingjun_age = int(sum_age / count)
print(f'包含None人员的平均年龄是{pingjun_age}')
print(temp_lst2)
3 以下不能创建一个字典的语句是()
• A:dict1 ={}
• B:dict2 = { 3∶5}
• C:dict3 ={[1,2,3]:“uestc”}
• D:dict4 = {(1,2,3): “uestc”}
c
数字\字符串\元组可以做key, list不行,字典更不行
4 给定字典 d,以下选项中对 x in d 描述正确的是()
• A:x 是一个二元元组,判断 x 是否是字典 d 中的键值对
• B:判断 x 是否是字典 d 中的键
• C:判断 x 是否是在字典 d 中以键或值方式存在
• D:判断 x 是否是字典 d 中的值
B
x in d ,是只能判断字典中的键的
5 如何合并两个字典?
dict1 = {'a': 1, 'c': 3}
dict2 = {'b': 2, 'c': 33, 'd': 4}
# 方法1 方法中规中矩,就是有点啰嗦.
dict3 = dict(sorted(list(dict1.items()) + list(dict2.items())))
print(dict3)
# 方法2 分别解压两个字典的键值对,强行合并,如有重复的键,则失败.
dict3 = dict(**dict1, **dict2)
print(dict3)
# 方法3 以第1个字典为基础,如果有重复的键,更新其值,无则添加
dict3 = dict1.copy()
dict3.update(dict2)
print(dict3)
标签:练习题,count,None,sum,数据类型,print,age,字典 来源: https://www.cnblogs.com/leeyong49/p/16610002.html