2

我有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}

这些只是样本,实际上每个字典都有数百个条目。我正在尝试合并两个字典并创建包含 {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 中提到的同一城市相匹配。

4

3 回答 3

5

这是我认为你想要的(演示)

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]
于 2012-11-16T23:17:49.007 回答
0

常用键有:

set(dict1.keys()) & set(dict2.keys())

创建包含 {dict1.values(): dict2.values()} 的 dict 3

这没有意义,字典是键值对......你真正想要什么?提示:

dict3 = {}
for k in set(dict1.keys()) & set(dict2.keys()):
    dict3[dict1[k]]=dict2[k]

{4: 5223}
于 2012-11-16T23:15:24.587 回答
0

直接的方法是检查一个键中的每个键是否属于另一个键:

result = {}
for key in dict1:
    if key in dict2:
        result[dict1[key]] = dict2[key]

您也可以尝试将它们转换为setorfrozenset并取它们的交集,但我不清楚这是否会更快:

keys_in_both = frozenset(dict1) & frozenset(dict2)
result = dict((dict1[key], dict2[key]) for key in keys_in_both)
于 2012-11-16T23:20:02.357 回答