第6章字典和集合习题
一、选择题。
1.以下选项中,不是建立字典的方式是( )
A)d = {[1,2]:1, [3,4]:3}
B)d = {(1,2):1, (3,4):3}
C)d = {'张三':1, '李四':2}
D)d = {1:[1,2], 3:[3,4]}
正确答案: A
解析:字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
2.以下表达式,正确定义了一个集合数据对象的是:( )
A) x = { 200, ’flg’, 20.3}
B) x = ( 200, ’flg’, 20.3)
C) x = [ 200, ’flg’, 20.3 ]
D) x = {‘flg’ : 20.3}
正确答案: A
解析:集合(set)是一个无序的不重复元素序列。元素之间用逗号隔开,序列用大括号 { } 括起来。
3.给出如下代码:
DictColor = {“seashell”:“海贝色”,“gold”:“金色”,“pink”:“粉红色”,“brown”:“棕色”,“purple”:“紫色”,“tomato”:“西红柿色”} 以下选项中能输出“海贝色”的是( )
A)print(DictColor.keys())
B)print(DictColor[“海贝色”])
C)print(DictColor.values())
D)print(DictColor[“seashell”])
正确答案: D
解析:可使用查找操作符([ ])进行访问字典,即依次指定字典名和放在方括号内的键进行访问。
4.下面代码的输出结果是( )
d ={"大海":"蓝色", "天空":"灰色","大地":"黑色"}
print(d["大地"],d.get("大地","黄色"))
A)黑的灰色
B)黑色黑色
C)黑色蓝色
D)黑色黄色
正确答案: B
解析:访问字典有两种方式,一是使用查找操作符([ ])进行访问,即依次指定字典名和放在方括号内的键进行访问;二是使用函数get(key, default=None)获取指定键的值,参数default 用于指定当要查询的键不存在时,此方法返回的默认值。此题,键“大地”对应的值为“黑色”,故返回B。
5.字典 d={'Name': 'Kate', 'No': '1001', 'Age': '20'},表达式len(d)的值为( )
A)12
B)9
C)6
D)3
正确答案: D
解析:len(dict)函数返回dict字典的元素个数。
6.以下关于组合数据类型的描述,错误的是:( )
A)集合类型是一种具体的数据类型
B)序列类似和映射类型都是一类数据类型的总称
C)python 的集合类型跟数学中的集合概念一致,都是多个数据项的无序组合
D)字典类型的键可以用的数据类型包括字符串,元组,以及列表
正确答案: D
解析:字典的值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。列表是可变数据类型,不可做字典的键。
7.以下关于字典类型的描述,正确的是:( )
A)字典类型可迭代,即字典的值还可以是字典类型的对象
B)表达式 for x in d: 中,假设d是字典,则x是字典中的键值对
C)字典类型的键可以是列表和其他数据类型
D)字典类型的值可以是任意数据类型的对象
正确答案: D
解析:字典本身的可迭代只针对键,列表是可变数据类型,不可做字典的键,字典的值可以取任何数据类型。
8.以下程序的输出结果是:( )
d = {"zhang":"China", "Jone":"America", "Natan":"Japan"}
print(max(d),min(d))
A)Japan America
B)zhang:China Jone:America
C)China America
D)zhang Jone
正确答案: D
解析:max(dict) 返回字典的键的最大值,min(dict) 返回字典的键的最小值。字符串按位比较,两个字符串第一位字符的ascii码谁大,字符串就大,不再比较后面的;第一个字符相同就比第二个字符串,以此类推,大写字母和小写字母的ASCII不同。大写字母的ASCII比小写字母的ASCII小。
9.以下关于字典和集合的描述,错误的是:( )
A)可以用大括号创建字典,用中括号增加新元素
B)嵌套的字典数据类型可以用来表达高维数据
C)字典的 pop 函数可以返回一个键对应的值,并删除该键值对
D)空字典和空集合都可以用大括号来创建
正确答案: D
解析:如果要创建一个空集合,只能使用函数set()实现。如果使用花括号{}创建一个空集合,Python 解释器会将其视为一个空字典。
10.以下程序的输出结果是:( )
dict = {'Name': 'baby', 'Age': 7}
print(dict.items())
A)[('Age', 7), ('Name', 'baby')]
B)('Age', 7), ('Name', 'baby')
C)'Age':7, 'Name': 'baby'
D)dict_items([('Age', 7), ('Name', 'baby')])
正确答案: D
解析:dict.items()返回一个列表,列表中每一个元素是由字典中的键和值组成的元组。
11.以下关于字典类型的描述,错误的是:( )
A)字典类型是一种无序的对象集合,通过键来存取
B)字典类型可以在原来的变量上增加或缩短
C)字典类型可以包含列表和其他数据类型,支持嵌套的字典
D)字典类型中的数据可以进行分片和合并操作
正确答案: D
解析:由于字典是无序的,因此没有索引,也不能使用分片操作符进行操作。
12.以下程序的输出结果是:( )
d = {"zhang":"China", "Jone":"America", "Natan":"Japan"}
for k in d:
print(k, end="")
A)ChinaAmericaJapan
B)zhang:China Jone:America Natan:Japan
C)“zhang””Jone””Natan”
D)zhangJoneNatan
正确答案: D
解析:遍历字典时,默认遍历所有的键,for k in d 功能与for k in d.keys()相同。
13.以下程序的输出结果是:( )
Da = {"北美洲":"北极兔","南美洲":"托哥巨嘴鸟","亚洲":"大熊猫","非洲":"单峰驼","南极洲":"帝企鹅"}
Da["非洲"] = "大猩猩"
print(Da)
A)('北美洲': '北极兔', '南美洲': '托哥巨嘴鸟', '亚洲': '大熊猫', '非洲': '大猩猩', '南极洲': '帝企鹅')
B)['北美洲': '北极兔', '南美洲': '托哥巨嘴鸟', '亚洲': '大熊猫', '非洲': '大猩猩', '南极洲': '帝企鹅']
C){"北美洲":"北极兔","南美洲":"托哥巨嘴鸟","亚洲":"大熊猫","非洲":"单峰驼","南极洲":"帝企鹅"}
D){'北美洲': '北极兔', '南美洲': '托哥巨嘴鸟', '亚洲': '大熊猫', '非洲': '大猩猩', '南极洲': '帝企鹅'}
正确答案: D
解析:dict[key] = value,如果key在字典dict中不存在,则直接将键值对添加到字典中;如果key已存在,则value覆盖原来字典中key对应的值。
14.以下关于字典操作的描述,错误的是:( )
A)del 用于删除字典或者元素
B)clear 用于清空字典中的数据
C)len 方法可以计算字典中键值对的个数
D)keys 方法可以获取字典的值列表
正确答案: D
解析:方法keys()获取字典中所有键的列表。
15.以下关于字典的描述,错误的是:( )
A)字典中元素以键信息为索引访问
B)字典长度是可变的
C)字典是键值对的集合
D)字典中的键可以对应多个值信息
正确答案: D
解析:字典中,一个键只对应一个值信息。不支持同一个键出现多次,否则,只会保留最后一个键值对。
16.给出如下代码
MonthandFlower={"1月":"梅花","2月":"杏花","3月":"桃花","4月":"牡丹花","5月":"石榴花","6月":"莲花","7月":"玉簪花","8月":"桂花","9月":"菊花","10月":"芙蓉花","11月":"山茶花","12月":"水仙花"}
n = input("请输入1—12的月份:")
print(n + "月份之代表花:" + MonthandFlower.get(str(n)+"月"))
以下选项中描述正确的是( )
A)代码实现了获取一个整数(1—12)来表示月份,输出该月份对应的代表花名B)MonthandFlower是列表类型变量
C)MonthandFlower是一个元组
D)MonthandFlower是集合类型变量
正确答案: A
解析:MonthandFlower是一个字典。
二、程序分析题。
1.下面程序的执行结果是______________。
ss = list(set("jzzszyj"))
ss.sort()
print(ss)
答案: ['j', 's', 'y', 'z']
解析:函数set() 将字符串去重,转换成集合,list(set())将集合转换为列表,sort()函数用于对列表进行正序排序,是对原来的列表进行的操作,不会产生一个新列表。
2.下面程序的执行结果是______________。
ss = list(set("htslbht"))
s = sorted(ss)
for i in s:
print(i,end = '')
答案:bhlst
解析:sorted(),将排序的结果放到一个有序的新列表中,该函数对原数据不会产生影响。
3.下面程序的执行结果是______________。
ls =list({'shandong':200, 'hebei':300, 'beijing':400})
print(ls)
答案:['shandong', 'hebei', 'beijing']
解析:list(dict),将字典的键转换为列表。
三.编程题。
1.编写代码完成如下功能:
(1)建立字典 d,包含内容是:"数学":101, "语文":202, "英语":203, "物理":204, "生物":206。
(2)向字典中添加键值对"化学":205。
(3)修改"数学"对应的值为 201。
(4)删除"生物"对应的键值对。
(5)按顺序打印字典 d 全部信息,参考格式如下(注意,其中冒号为英文冒号,逐行打印):
201:数学
202:语文
203:英语
204:物理
205:化学
答案:
d = {"数学":101, "语文":202, "英语":203, "物理":204, "生物":206}
d["化学"] = 205
d["数学"] = 201
del d["生物"]
for key in d:
print("{}:{}".format(d[key], key))
2.已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分,并查找所有最高分同学。字典示例:
scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40}
答案:
scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40,"Zhou Liu": 96,"Zhao Qi": 65, "Sun Ba": 99,"Zheng Jiu": 78, "Wu Shi": 99,"Dong Shiyi": 60} highest = max(scores.values())
lowest = min(scores.values())
average = sum(scores.values())*1.0/len(scores)
print(highest, lowest, average)
highestPerson = [name for name, score in scores.items() if score == highest]
print(highestPerson)
3.定义一个含有三个元素的字典,分别用三种方式删除其中的一个元素,然后再输出该字典。
参考答案:
scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40}
del(scores['Zhang San'])
scores.pop('Li Si')
del scores['Wang Wu']
print(scores)
4.定义一个含有三个元素的可变集合,分别用三种方式删除其中的一个元素,然后再输出该集合。
参考答案:
scores = {"Zhang San", "Li Si", "Wang Wu"}
scores.remove("Zhang San")
scores.pop()
scores.discard("Wang Wu")
print(scores)