如果我以pythonic方式创建字典,它会被覆盖
ans = ['car','bus']
exp = ['a','b']
for ex in exp:
b ={x: {ex: {'1:N': [],'2:N': []}} for x in ans}
如何避免覆盖“a”键?
答案 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': []}}}
我相信这就是你想要的,如果有帮助,请告诉我。