根据字典值将字典数组转换为数组数组
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())
我有这个数组:
[{'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())