Извлечь все данные с тем же ключом из словаря в другой массив - PullRequest
0 голосов
/ 27 марта 2012

Я просто хочу узнать простой способ извлечения всех данных с тем же ключом "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'}]

1 Ответ

2 голосов
/ 27 марта 2012

Довольно сложно понять, что вам действительно нужно.В любом случае попробуйте взглянуть на следующий код, который использует 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'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...