1.在Python3中,下列程序运行结果为:(B)
dicts = {}
dicts[(1, 2)] = {3, (4, 5)}
print(dicts)
A.报错
B.{(1, 2): {(4, 5), 3}}
C.{(1, 2): [(4, 5), 3]}
D.{(1, 2): [3, 4, 5]}
解析:
根据题意字典添加元素方法为 dict[key] = value ,得到key 是:(1,2) ,value是:{3, (4, 5)},由于{3, (4, 5)},它是一个集合,集合内部会自动排序,元组在集合里面会往前放,所以变成:{(4, 5), 3}。所以最后的结果 key:value = (1,2):{(4,5),3}。
2.在Python3中,程序运行结果为:(C)
tmp = dict.fromkeys(['a', 'b'], 4)
print(tmp)
A{('a', 'b'): 4}
B{'a': 4}
C{'a': 4, 'b': 4}
D{ 'b': 4}
解析:
本题目主要考察字典的 fromkeys 这个函数的使用,fromkeys(seq,value),以seq做为键,这里键为列表,是一个元素,value为值,字典是以键值对的形式呈现出来的。所以,这个结果就为:{'a':4,'b':4}。
3.在Python3中,程序运行结果为:(C)
kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy()
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
Print(sum)
A.1
B.2
C.6
D.10
解析:
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象;深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。两者的区别在于对‘对象的拷贝’,对数值则拷贝后完全是独立的。因此改变dict中普通数值,浅拷贝与深拷贝结果相同。另一个copy对象并不会跟着改变。
4.以下代码输出为:(D)
list1 = {'1':1,'2':2}
list2 = list1
list1['1'] = 5
sum = list1['1'] + list2['1']
print(sum)
A.1
B.2
C.7
D.10
解析:
根据可变数据类型特性:list2 = list1赋值引用,list2 和 list1 都指向同一个对象。list1 和 list2 指向的是同一块内存空间;list1['1']=5 原内存空间中'1'的value值被改变,原内存空间存储的数据变为:{'1': 5, '2': 2};因此 sum = list1['1']+list2['1']=5+5=10。
5.以下程序输出为:(A)
info = {'name': '小新', 'id': 100}
print(info.get('age'))
info['age'] = 18
print(info.get('age'))
A.None 18
B.None None
C.编译错误
D.运行错误
解析:
本题利用字典的dict.get(key[, value])方法查找 key(键),key( 字典中要查找的键),value(可选,如果指定键的值不存在时,返回该默认值)。返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值。dict.get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。