Python【每日一问】03

问:请给出下列代码的执行结果,并解释

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() 方法 的返回结果是一个新的字典

原文地址:https://www.cnblogs.com/ElegantSmile/p/10696208.html