ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第四章 4 数据类型-字典 练习题

2022-08-21 15:02:24  阅读:188  来源: 互联网

标签:练习题 count None sum 数据类型 print age 字典


第四章 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有