【问题标题】:Merge dictionaries where keys have same value合并键具有相同值的字典
【发布时间】:2021-05-12 10:29:44
【问题描述】:

我只发现人们想将字典与标准“键”合并的问题,但我想根据相同的值合并字典(我不知道究竟是什么值)。

假设我有一个包含字典的列表

myList = [
  {'key1': 'v1', 'key2': 'v2'},
  {'key1': 'v1', 'key2': 'v3'},
  {'key1': 'v1', 'key2': 'v4'},
  {'key1': 'v5', 'key2': 'v6'},
  {'key1': 'v7', 'key2': 'v8'}
]

现在我想合并键具有相同值的字典,例如,key1 的值是 v1,但我不知道 'v1' 是什么,所以我不能使用像 @ 这样的标准987654324@.

导致

myMergedList = [
  {'key1': 'v1', 'key2': ('v2','v3','v4')},
  {'key1': 'v5', 'key2': 'v6'},
  {'key1': 'v7', 'key2': 'v8'}
]

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    试试:

    myList = [
        {"key1": "v1", "key2": "v2"},
        {"key1": "v1", "key2": "v3"},
        {"key1": "v1", "key2": "v4"},
        {"key1": "v5", "key2": "v6"},
        {"key1": "v7", "key2": "v8"},
    ]
    
    out = {}
    for d in myList:
        out.setdefault(d["key1"], []).append(d["key2"])
    
    out = [
        {"key1": k, "key2": v[0] if len(v) == 1 else tuple(v)}
        for k, v in out.items()
    ]
    
    print(out)
    

    打印:

    [{'key1': 'v1', 'key2': ('v2', 'v3', 'v4')}, 
     {'key1': 'v5', 'key2': 'v6'}, 
     {'key1': 'v7', 'key2': 'v8'}]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多