我有以下字典串列:
[{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107850,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13452,
'Elderly': 1655476,
'FirstDose': 23386741,
'SecondDose': 18721109},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107619,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13451,
'Elderly': 1655474,
'FirstDose': 23386687,
'SecondDose': 18720932},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107429,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13450,
'Elderly': 1655473,
'FirstDose': 23386644,
'SecondDose': 18720785},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107125,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13449,
'Elderly': 1655468,
'FirstDose': 23386571,
'SecondDose': 18720554},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42106807,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13448,
'Elderly': 1655464,
'FirstDose': 23386503,
'SecondDose': 18720304}
由于每天有多個字典,我想獲得每一天的最高Total_Vaccinations值。
我能夠按天對字典進行分組,并且我還能夠獲得特定鍵的最高值,但是,我無法同時進行這兩項操作。有什么建議?(我正在使用 Python)
uj5u.com熱心網友回復:
嘗試list.sort或sorted對字典串列進行排序。例如,您可以使用以下內容按日期(最近的在前)然后按總疫苗接種(從高到低)排序。
from pprint import pprint
my_list = [{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107850,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13452,
'Elderly': 1655476,
'FirstDose': 23386741,
'SecondDose': 18721109},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107619,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13451,
'Elderly': 1655474,
'FirstDose': 23386687,
'SecondDose': 18720932},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107429,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13450,
'Elderly': 1655473,
'FirstDose': 23386644,
'SecondDose': 18720785},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42107125,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13449,
'Elderly': 1655468,
'FirstDose': 23386571,
'SecondDose': 18720554},
{'Reportdt': '2021-09-30',
'Total_Vaccinations': 42106807,
'Total_Individuals': None,
'LastValue': 0,
'ObjectId': 13448,
'Elderly': 1655464,
'FirstDose': 23386503,
'SecondDose': 18720304}]
my_list.sort(key=lambda x: (x['Reportdt'], x['Total_Vaccinations']),
# Reverse to sort by highest -> lowest
reverse=True)
print(f'-- List:')
pprint(my_list)
day_with_highest_vac = my_list[0]
print('-- Day with highest vaccination:')
pprint(day_with_highest_vac)
uj5u.com熱心網友回復:
如果您可以在同一天擁有多個詞典,我認為這種簡單的方法可以完成這項作業:
res = {}
for i in list_dictionaries:
res[i['Reportdt']] = max(i['Total_Vaccinations'], res.get(i['Reportdt'], 0))
uj5u.com熱心網友回復:
如果pandas對你沒問題,那么
df=pd.DataFrame(my_list_of_dicts)
print(df.sort_values(['Reportdt', 'Total_Vaccinations'], ascending=False))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318287.html
上一篇:python:按多個字典鍵分組
