我有一个列表[{"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]
答案 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}]