Skip to main content
 首页 » 编程设计

python之如何基于字典键的相同值创建列表

2025年05月04日20telwanggs

我正在尝试将包含相同日期的字典连接在一起,并创建一个温度值列表,这些公共(public)日期必须包含这些温度值,然后提取这些值的最大值和最小值。

我有这个:

data =  
[{'temp_min': 51.75, 'date': '2019-05-31', 'temp_max': 52.25},  
 {'temp_min': 52.5, 'date': '2019-05-31', 'temp_max': 52.87},  
 {'temp_min': 53.29, 'date': '2019-05-31', 'temp_max': 53.55},  
 {'temp_min': 68.19, 'date': '2019-06-01', 'temp_max': 75.19},  
 {'temp_min': 61.45, 'date': '2019-06-01', 'temp_max': 68.45},  
 {'temp_min': 56.77, 'date': '2019-06-01', 'temp_max': 59.77}] 

并且想要这个:

[{'date':'2019:05-31', 'temp_min':[51.75, 52.5, 53.29], 'temp_max':  
[52.25, 52.87, 53.55]}, {'date':'2019:06-01','temp_min':[68.19,  
 61.45, 56.77], 'temp_max':[75.19, 68.45, 59.77]}] 

我正在尝试使用 itertools groupby 来执行此操作,但是当我尝试如上所述创建输出时遇到了问题。如果对此有不同的方法,也欢迎。我不确定如何将分组重新放入字典并保留唯一日期。

def get_temp(temp): 
    return temp['date'] 
 
grouping = itertools.groupby(data, get_temp) 
 
for key, group in grouping: 
    print(key) 
        for d in group: 
            print(d['temp_max']) 

请您参考如下方法:

遍历 group 以排序 mins 和 maxs 以分隔字典的键:

def get_temp(temp): 
    return temp['date'] 
 
lst = [] 
for key, group in itertools.groupby(data, get_temp): 
    groups = list(group) 
    d = {} 
    d['date'] = key 
    d['temp_min'] = [x['temp_min'] for x in groups] 
    d['temp_max'] = [x['temp_max'] for x in groups] 
    lst.append(d) 
 
print(lst)