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

python:使用python方式时覆盖字典,python,Python,如果我以pythonic的方式创建字典,它会被覆盖 ans = ['car','bus'] exp = ['a','b'] for ex in exp: b ={x: {ex: {'1:N': [],'2:N': []}} for x in ans} 如何避免覆盖“a”键?看起来您是Python初学者,因此我建议您将程序分成小块进行调试。 在您的情况下,字典将被覆盖,因为=运算符始终执行重新分配,即创建新副本,并且即使对于可变数据类型,也不会修改现有变量 如果你像这样破坏你的代码 a

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

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

如何避免覆盖“a”键?

看起来您是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':[]}表示exp中的x}表示ans中的a}

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


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

您希望发生什么?您正在将列表设置为字典,而不是将字典设置为字典。请更清楚地了解您希望最终结果是什么