我只是想知道一种简单的方法,可以将相同的键"Cat"
中的所有数据从字典中提取到另一个数组中。
从下面的字典..
密钥"Cat: Book"
的所有数据应位于单独的数组中,密钥"Cat: pen"
位于另一个数组中。
这本词典是动态的,可以有更多不同的"Cat"
值。
category= [{'Cat':'Book','Item':'LongBook','Qty':'25'},
{'Cat':'Book','Item':'Diary','Qty':'20'},
{'Cat':'Pen','Item':'BallPoint','Qty':'30'}]
答案 0 :(得分:2)
很难理解你真正需要什么。无论如何,试着看一下uses defaultdict:
的以下代码category= [{'Cat':'Book','Item':'LongBook','Qty':'25'},
{'Cat':'Book','Item':'Diary','Qty':'20'},
{'Cat':'Pen','Item':'BallPoint','Qty':'30'}]
from collections import defaultdict
output = defaultdict(list)
for row in category:
output['Cat' + ':' + row['Cat']].append(row)
print output.values()
>>>[[{'Item': 'BallPoint', 'Qty': '30', 'Cat': 'Pen'}], [{'Item': 'LongBook', 'Qty': '25', 'Cat': 'Book'}, {'Item': 'Diary', 'Qty': '20', 'Cat': 'Book'}]]
或更好use groupby:
category= [{'Cat':'Book','Item':'LongBook','Qty':'25'},
{'Cat':'Book','Item':'Diary','Qty':'20'},
{'Cat':'Pen','Item':'BallPoint','Qty':'30'}]
from itertools import groupby
for key, vals in groupby(category, lambda x: x['Cat']):
print key, list(vals)
>>>Book [{'Item': 'LongBook', 'Qty': '25', 'Cat': 'Book'}, {'Item': 'Diary', 'Qty': '20', 'Cat': 'Book'}]
>>>Pen [{'Item': 'BallPoint', 'Qty': '30', 'Cat': 'Pen'}]