繁体   English   中英

合并键具有相同值的字典

[英]Merge dictionaries where keys have same value

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

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

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

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

导致

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

尝试:

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'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM