Bạn có thể tận dụng itertools.groupby:
from itertools import groupby
from operator import itemgetter
from pprint import pprint
data = [ {
'Organization' : '123 Solar',
'Phone' : '444-444-4444',
'Email' : '',
'website' : 'www.123solar.com'
}, {
'Organization' : '123 Solar',
'Phone' : '',
'Email' : '[email protected]',
'Website' : 'www.123solar.com'
},
{
'Organization' : '234 test',
'Phone' : '111',
'Email' : '[email protected]',
'Website' : 'b.123solar.com'
},
{
'Organization' : '234 test',
'Phone' : '222',
'Email' : '[email protected]',
'Website' : 'bd.123solar.com'
}]
data = sorted(data, key=itemgetter('Organization'))
result = {}
for key, group in groupby(data, key=itemgetter('Organization')):
result[key] = [item for item in group]
pprint(result)
in:
{'123 Solar': [{'Email': '',
'Organization': '123 Solar',
'Phone': '444-444-4444',
'website': 'www.123solar.com'},
{'Email': '[email protected]',
'Organization': '123 Solar',
'Phone': '',
'Website': 'www.123solar.com'}],
'234 test': [{'Email': '[email protected]',
'Organization': '234 test',
'Phone': '111',
'Website': 'b.123solar.com'},
{'Email': '[email protected]',
'Organization': '234 test',
'Phone': '222',
'Website': 'bd.123solar.com'}]}
UPD:
Dưới đây là những gì bạn có thể làm để nhóm các mục vào dict đơn lẻ:
for key, group in groupby(data, key=itemgetter('Organization')):
result[key] = {'Phone': [],
'Email': [],
'Website': []}
for item in group:
result[key]['Phone'].append(item['Phone'])
result[key]['Email'].append(item['Email'])
result[key]['Website'].append(item['Website'])
sau đó, trong result
bạn sẽ có:
{'123 Solar': {'Email': ['', '[email protected]'],
'Phone': ['444-444-4444', ''],
'Website': ['www.123solar.com', 'www.123solar.com']},
'234 test': {'Email': ['[email protected]', '[email protected]'],
'Phone': ['111', '222'],
'Website': ['b.123solar.com', 'bd.123solar.com']}}
Tôi đã kiểm tra mã của bạn và không chính xác những gì tôi cần. Cảm ơn vì đã cho tôi thấy sự sắp xếp, điều đó thật tuyệt vời. Tôi đang tìm cách kết hợp tất cả các từ điển có cùng tên tổ chức thành một từ điển trong cùng một danh sách. –
Chắc chắn, bạn có thể tạo một từ điển từ này. Chỉ cần sử dụng biến 'nhóm' đó. – alecxe
@ Jacob-IT, tôi đã cập nhật câu trả lời, vui lòng kiểm tra. – alecxe