我想将当前数据格式转换为预期结果
这些物品应作为原产地订购。
我怎样才能以优雅的方式使用Python
[{'_id': 1800, 'count': 32},
.....
{'_id': 1892, 'count': 1},
{'_id': 1899, 'count': 13}]
{"_id":[1800,1892,1899], "count":[32,1,13]}
答案 0 :(得分:1)
使用defaultdict
from collections import defaultdict
l = [{'_id': 1800, 'count': 32},
{'_id': 1892, 'count': 1},
{'_id': 1899, 'count': 13}]
d = defaultdict(list)
for i in l:
for j,k in i.items():
d[j].append(k)
>>>d
defaultdict(<type 'list'>, {'count': [32, 1, 13], '_id': [1800, 1892, 1899]})
或强>
使用Counter
from collections import Counter
l = [{i:[j] for i,j in d.items()} for d in l]
result_counter = Counter()
for i in l:
result_counter.update(i)
>>>result_counter
Counter({'_id': [1800, 1892, 1899], 'count': [32, 1, 13]})
答案 1 :(得分:1)
来自python collections docs:
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
... d[k].append(v)
...
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
答案 2 :(得分:1)
您可以简单地遍历列表并构建所需的字典。
In [2]: l = [{'_id': 1800, 'count': 32}, {'_id': 1892, 'count': 1}, {'_id': 1899, 'count': 13}]
In [3]: {'_id': [data['_id'] for data in l], 'count': [data['count'] for data in l]}
Out[3]: {'_id': [1800, 1892, 1899], 'count': [32, 1, 13]}
答案 3 :(得分:0)
>>> data
[{'count': 32, '_id': 1800}, {'count': 1, '_id': 1892}, {'count': 13, '_id': 1899}]
>>> result = {key:[] for key in data[0]}
>>> for d in data:
... for k in d:
... result[k].append(d[k])
...
>>> result
{'count': [32, 1, 13], '_id': [1800, 1892, 1899]}