这是因为您将外部字典的 all 键与 same 内部字典相关联。您首先使用dict.fromkeys(y,0) 构建了一个字典,然后将该字典与所有键关联:dict.fromkeys(x,...)。
一种构造你想要的字典的方法是例如字典理解:
zx = {k: dict.fromkeys(y,0) for k in x}
虽然这看起来完全一样,但实际上并非如此:在这里,我们将 每个 k in x 评估 dict.fromkeys(y,0) 再次。结果,构造的字典将全部等价,但不同一个对象。
现在我们得到期望的:
>>> x=[1,2,3,4,5]
>>> y=[7,8,9,10,11]
>>> zx = {k: dict.fromkeys(y,0) for k in x}
>>> zx
{1: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 2: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 3: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 4: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 5: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}}
>>> zx[1][8]+=1
>>> zx
{1: {8: 1, 9: 0, 10: 0, 11: 0, 7: 0}, 2: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 3: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 4: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}, 5: {8: 0, 9: 0, 10: 0, 11: 0, 7: 0}}