Skip to main content
 首页 » 编程设计

python之遍历字典列表和按键分组

2025年05月04日16虾米姐

我有一个字典列表:

my_list = [ 
    {'name': 'AAA', 'date': '2018-05-14', 'price': 20.0}, 
    {'name': 'AAA', 'date': '2018-05-15', 'price': 22.0}, 
    {'name': 'AAA', 'date': '2018-05-16', 'price': 30.0}, 
    {'name': 'BBB', 'date': '2018-05-14', 'price': 15.0}, 
    {'name': 'BBB', 'date': '2018-05-15', 'price': 32.0} 
    ] 

我的问题是如何遍历该列表以生成这种格式的列表?

parsed_list = [ 
    {'name': 'AAA', 'data': [['2018-05-14', 20.0], ['2018-05-15', 22.0], ['2018-05-16', 30.0]]}, 
    {'name': 'BBB', 'data': [['2018-05-14', 15.0], ['2018-05-15', 32.0]]} 
    ] 

我尝试了这个问题中描述的方法:Python: group list items in a dict 但我需要一种不同的输出格式,但我不知道我需要更改什么。

请您参考如下方法:

一种方法可能是使用defaultdict:

from collections import defaultdict 
 
my_list = [ 
    {'name': 'AAA', 'date': '2018-05-14', 'price': 20.0}, 
    {'name': 'AAA', 'date': '2018-05-15', 'price': 22.0}, 
    {'name': 'AAA', 'date': '2018-05-16', 'price': 30.0}, 
    {'name': 'BBB', 'date': '2018-05-14', 'price': 15.0}, 
    {'name': 'BBB', 'date': '2018-05-15', 'price': 32.0} 
    ] 
 
tmp = defaultdict(list) 
 
for item in my_list: 
    tmp[item['name']].append([item['date'],item['price']]) 
     
parsed_list = [{'name':k, 'data':v} for k,v in tmp.items()] 
print(parsed_list) 

结果:

[{'name': 'AAA', 'data': [['2018-05-14', 20.0],  
                          ['2018-05-15', 22.0], ['2018-05-16', 30.0]]},  
 {'name': 'BBB', 'data': [['2018-05-14', 15.0], ['2018-05-15', 32.0]]}]