根据字典值将字典数组转换为数组数组

Convert an array of dicts to array of arrays based on dicts values

我有这个数组:

[{'id_1': 5}, {'id_2': 10}, {'id_2': 4}]

我希望输出为:

[
 [5],
 [10,4]
]

我尝试循环并创建特定的数组来跟踪使用的索引,但我觉得应该有一种更高效的方法,即 O(n) 而不是 O(n2)

您可以使用 defaultdict 作为 O(n) 解决方案:

l = [{'id_1': 5}, {'id_2': 10}, {'id_2': 4}]

from collections import defaultdict
dic = defaultdict(list)
for d in l:
    for k,v in d.items():
        dic[k].append(v)

out = list(dic.values())

输出:[[5], [10, 4]]

setdefault 的变体:

dic = {}
for d in l:
    for k,v in d.items():
        dic.setdefault(k, []).append(v)
out = list(dic.values())