我有两个嵌套字典:
d:
{'redFish': {'redFish': 'inf', 'blueFish': 9, 'twoFish': 10, 'oneFish': 6},
'blueFish': {'redFish': 9, 'blueFish': 'inf', 'twoFish': 11, 'oneFish': 10},
'twoFish': {'redFish': 10, 'blueFish': 11, 'twoFish': 'inf', 'oneFish': 8},
'oneFish': {'redFish': 6, 'blueFish': 10, 'twoFish': 8, 'oneFish': 'inf'}}
以及
newDict:
{'blueFish': {'blueFish': None, 'twoFish': None, ('redFish', 'oneFish'): None},
'twoFish': {'blueFish': None, 'twoFish': None, ('redFish', 'oneFish'): None},
('redFish', 'oneFish'): {'blueFish': None, 'twoFish': None, ('redFish', 'oneFish'): None}}
对于相同的键对,我想将值从d
传输到newDict
。对于这些字典,这些密钥对是
[blueFish][blueFish]
[blueFish][twoFish]
[twoFish][blueFish]
[twoFish][twoFish]
如果这起作用,那么d
中这些键对的值将移动到newDict
中的相同键对
我编写了这段代码来尝试这样做:
for name1 in newDict:
for name2 in name1:
for nameA in d:
for nameB in d:
if name1 == nameA and name2 == nameB:
newDict[name1][name2] = d[nameA][nameB]
但是,在newDict
中没有任何更改,因为所有键对的所有值仍然是None
。我如何修复这个问题,为什么我的代码不能工作
您可以利用dictionary
keys
的行为类似于集合这一事实。您可以通过以下方式找到两个词典的共同键:这将为您提供一个可以迭代的集合:
您可以在内部dict中执行相同的操作,只更新公共值:
我认为在Python2中,您可以直接从dict生成一个集合,因此应该以相同的方式工作:
可以使用关键点的交点:
相关问题 更多 >
编程相关推荐