如何将具有相同键的词典值合并到词典列表中?

时间:2019-05-11 08:49:10

标签: python dictionary

我有一个字典列表,如下所示

description = [{"category": "emergency", "meds": [{"drug": "mild", "env": "cold"}]},
               {"category": "normal", "meds": [{"drug": "slow", "env": "normal"}]},
               {"category": "emergency", "meds": [{"drug": "severe", "env": "hot"}]},
               {"category": "medium", "meds": [{"drug": "drowsy", "env": "normal"}]},
               {"category": "normal", "meds": [{"drug": "mild", "env": "normal"}]}]

正如您看到的 category 键一样,emergencynormal出现了两次。现在,我想要将这两个键的值合并为一个,使其看起来像下面的

description_collapsed = [{"category": "emergency", "meds": [{"drug": "mild", "env": "cold"}, {"drug": "severe", "env": "hot"}]},
               {"category": "normal", "meds": [{"drug": "slow", "env": "normal"}, {"drug": "mild", "env": "normal"}]},
               {"category": "medium", "meds": [{"drug": "drowsy", "env": "normal"}]}]

我试图做这样的事情

description_collapsed = {}
for i in description:
    if description_collapsed.get(i["category"]):
        description_collapsed.get(i["meds"].extend(i["meds"]))
    else:
        description_collapsed[i["category"]] = i["meds"]

但是对于每种类别的 meds 键,我只有一本字典。

如何获得所需的输出?

1 个答案:

答案 0 :(得分:1)

i['meds']不是description_collapses的键。规则是description_collapsed.get(i["category"])的值,因此您需要扩展该值。

您的括号也有误。

请注意,最终结果将是字典,而不是列表。

description_collapsed = {}
for i in description:
    if i["category"] in description_collapsed:
        description_collapsed.[i["category"]].extend(i["meds"])
    else:
        description_collapsed[i["category"]] = i["meds"]