通过基于另一个键的值组合on键的值来获取字典列表

时间:2019-09-16 17:32:16

标签: python

我有一个列表[{"a":11, "b":2}, {"a":12, "b":2}, {"a":13, "b":3}, {"a":14, "b":4}]

我想基于a的值来组合b的值

我希望输出为[{'a':[11, 12], 'b':2}, {'a':[13], 'b':3}, {'a':[14], 'b':4}]

我尝试过[{ k:list(set([d[k] for d in a])) for k in a[0] } for i in a]

1 个答案:

答案 0 :(得分:1)

您可以创建中介字典,以将b的值映射到a的值的子列表,然后使用列表推导将中介字典的项输出为dict键为“ b”,值为“ a”:

mapping = {}
for d in lst:
    mapping.setdefault(d['b'], []).append(d['a'])
[{'a': v, 'b': k} for k, v in mapping.items()]

这将返回:

[{'a': [11, 12], 'b': 2}, {'a': [13], 'b': 3}, {'a': [14], 'b': 4}]