问:请给出下列代码的执行结果,并解释
a = dict.fromkeys([6, 7, 8], ["testing", {"name": "ken"},123])
print(a)
a[7][1]["name"] = "sucy"
print(a)
答:
{6: ['testing', {'name': 'ken'}, 123], 7: ['testing', {'name': 'ken'}, 123], 8: ['testing', {'name': 'ken'}, 123]}
{6: ['testing', {'name': 'sucy'}, 123], 7: ['testing', {'name': 'sucy'}, 123], 8: ['testing', {'name': 'sucy'}, 123]}
解释原因:
(1)fromkeys() 方法用于创建一个新的字典,以可迭代对象((字符串、列表、元祖、字典))中的元素分别作为字典中的键,所有键对应同一个值,默认为None
(2)fromkeys() 方法语法:
dict.fromkeys(iterable[,value=None])
iterable 就是用于创建新的字典的键的可迭代对象
value 是一个可选参数,如果不设置的话就是None
a = dict.fromkeys([6, 7, 8], ["testing", {"name": "ken"},123])
这个例子中 就把 ["testing", {"name": "ken"},123] 这个列表作为 value
由于所有键对应同一个值,当使用 a[7][1]["name"] = "sucy" 改变值时,所有键对应的值都改变了
(3)fromkeys() 方法 的返回结果是一个新的字典