python:使用pythonic方式时字典覆盖

时间:2016-10-16 14:12:34

标签: python

如果我以pythonic方式创建字典,它会被覆盖

ans = ['car','bus']
exp = ['a','b']
for ex in exp:
     b ={x: {ex: {'1:N': [],'2:N': []}} for x in ans}

如何避免覆盖“a”键?

1 个答案:

答案 0 :(得分:1)

看起来你是Python的初学者所以我建议你把你的程序分成更小的部分来调试它。 在你的情况下,字典被覆盖,因为=运算符总是重新分配,即创建新副本,并且即使对于可变数据类型也不会修改现有变量

如果你破坏了这样的代码

ans = ['car','bus']
exp = ['a','b']


b = {x:{'1:N': [],'2:N': []} for x in exp} 
print(b)

它会给 {'b': {'2:N': [], '1:N': []}, 'a': {'2:N': [], '1:N': []}}

如果你像这样修改词典理解 b = {a:{x:{'1:N': [],'2:N': []} for x in exp} for a in ans}

然后你会得到输出
{'bus': {'b': {'2:N': [], '1:N': []}, 'a': {'2:N': [], '1:N': []}}, 'car': {'b': {'2:N': [], '1:N': []}, 'a': {'2:N': [], '1:N': []}}}

我相信这就是你想要的,如果有帮助,请告诉我。