我需要在一行中创建多个词典,我尝试跟随。
a,b,c = dict(), dict(), dict()
有没有任何pythonic方法来实现这一目标?我试过
a = b = c = dict()
但在此,如果我改变a
,它也会反映其他词组
a['k'] = 'val'
a
{'k': 'val'}
b
{'k': 'val'}
c
{'k': 'val'}
答案 0 :(得分:0)
你的第一种方法很好。使用
a,b,c = dict(), dict(), dict()
第二种方法的解释:
Python变量是对象的引用,但实际数据是 包含在对象中。
a = b = c = dict()
没有制作三个词典。在python中,变量不存储值。变量指向对象和对象存储值,因此这里a,b,c
变量指向包含一个dict()
的同一对象。你可以检查
print(id(a),id(b),id(c))
4321042248 4321042248 4321042248
这就是为什么当你改变一个时,它也会改变另一个因为它们持有相同的dict值。
答案 1 :(得分:0)
我在这里发表一些想法:
Pep 8是python代码的样式指南:https://www.python.org/dev/peps/pep-0008/。但是没有关于在那里声明变量的事情。
虽然这些工作:
a,b,c = dict(), dict(), dict()
a, b, c = [dict() for _ in range(3)]
我认为这是最具可读性的:</ p>
a = dict()
b = dict()
c = dict()
原因:
您始终可以期望变量在不同的行上定义。如果你要分配20个项目,那将是:a,b,c,d,e .... ??
无论如何,另一种方法是将它们嵌套在一个字典中,这里也只声明了一个变量:
dicts = {letter:dict() for letter in list("abc")} # {'a': {}, 'b': {}, 'c': {}}