我有2本词典。
dict1={('SAN RAMON', 'CA'): 1, ('UPLAND', 'CA'): 4, ('POUGHKEESIE', 'NY'): 3, ('CATTANOOGA', 'TN'): 1}
dict2={('UPLAND', 'CA'): 5223, ('PORT WASHING', 'WI'): 11174, ('PORT CLINTON', 'OH'): 6135, ('GRAIN VALLEY', 'MO'): 10352, ('GRAND JUNCTI', 'CO'): 49688, ('FAIRFIELD', 'IL'): 5165}
这些只是样本,实际上每个dict都有数百个条目。我正在尝试合并两个字典并创建包含{dict1.values():dict2.values()}的字典3,但前提是该字母出现在两个字典中。因此,dict3中的一个条目看起来像
{4:5223} # for 'UPLAND', 'CA' since it appears in both dict1 and dict2
这只是我写的更大功能中的一小步。我打算尝试这样的事情:
for item in dict1.keys():
if item not in dict2.keys():
del item
return dict[(dict1.keys())=(dict2.keys())]
我无法弄清楚如何确保来自dict1的投诉数量与dict2中所引用的城市相匹配。
答案 0 :(得分:5)
以下是我认为你想要的(demo):
dict3 = dict((dict1[key], dict2[key]) for key in dict1 if key in dict2)
扩展了一点,看起来像这样:
dict3 = {}
for key in dict1:
if key in dict2:
dict3[dict1[key]] = dict2[key]
答案 1 :(得分:0)
常用密钥是:
set(dict1.keys()) & set(dict2.keys())
创建包含{dict1.values():dict2.values()}
的字典3
这没有意义,词典是键值对...你真正想要的是什么?提示:
dict3 = {}
for k in set(dict1.keys()) & set(dict2.keys()):
dict3[dict1[k]]=dict2[k]
{4: 5223}
答案 2 :(得分:0)
直截了当的方法是检查一个中的每个键是否为另一个中的成员:
result = {}
for key in dict1:
if key in dict2:
result[dict1[key]] = dict2[key]
您也可以尝试将它们转换为set
或frozenset
并将其转换为交叉点,但我不清楚这是否会更快:
keys_in_both = frozenset(dict1) & frozenset(dict2)
result = dict((dict1[key], dict2[key]) for key in keys_in_both)