我有一个字典列表,如下所示
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 键一样,emergency
和normal
出现了两次。现在,我想要将这两个键的值合并为一个,使其看起来像下面的
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 键,我只有一本字典。
如何获得所需的输出?
答案 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"]