【问题标题】:Merge 2 dictionaries in Python在 Python 中合并 2 个字典
【发布时间】:2012-11-16 23:07:26
【问题描述】:

我有两本词典。

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 中提到的城市相匹配。

【问题讨论】:

    标签: python dictionary mutable


    【解决方案1】:

    这就是我认为你想要的(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]
    

    【讨论】:

      【解决方案2】:

      常用键有:

      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}
      

      【讨论】:

      • 只是提一下 - 对于常用键 - 在 2.7 中你可以这样做 dict1.viewkeys() & dict2
      【解决方案3】:

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

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-26
        • 2021-10-06
        • 2011-11-16
        • 1970-01-01
        相关资源
        最近更新 更多