gpt4 book ai didi

Python 从字典列表中获取最大值和最小值

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:09 25 4
gpt4 key购买 nike

如何从这样的代码中获取最大值和最小值:

[{'sum': 44, 'code': 'A'}, 
{'sum': 1, 'code': 'B'},
{'sum': 44, 'code': 'B'},
{'sum': 33, 'code': 'B'},
{'sum': 2, 'code': 'C'},
{'sum': 694, 'code': 'A'},
{'sum': 12, 'code': 'B'},
{'sum': 5, 'code': 'C'}]

我需要这样的结果:

#max
[{'sum': 694, 'code': 'A'},
{'sum': 44, 'code': 'B'},
{'sum': 5, 'code': 'C'}]

#min
[{'sum': 44, 'code': 'A'},
{'sum': 1, 'code': 'B'},
{'sum': 2, 'code': 'C'}]

最佳答案

你可以使用 itertools.groupby cf。 How do I use Python's itertools.groupby()?有关详细信息,以及 max 的关键参数。这是一个简短的代码:

from itertools import groupby


input = [
{'sum': 44, 'code': 'A'},
{'sum': 1, 'code': 'B'},
{'sum': 44, 'code': 'B'},
{'sum': 33, 'code': 'B'},
{'sum': 2, 'code': 'C'},
{'sum': 694, 'code': 'A'},
{'sum': 12, 'code': 'B'},
{'sum': 5, 'code': 'C'}
]

# groupby requires its input to be sorted by group key
input.sort(key=lambda x: (x['code'], x['sum'])

maximums = list()
minimums = list()

for code, group in groupby(input, key=lambda x: x['code']):
group = list(group) # Consume iterator
maximums.append(group[-1])
minimums.append(group[0])

print 'max:', maximums
print 'min:', minimums

这会让你:

max: [{'sum': 694, 'code': 'A'}, {'sum': 44, 'code': 'B'}, {'sum': 5, 'code': 'C'}]
min: [{'sum': 44, 'code': 'A'}, {'sum': 1, 'code': 'B'}, {'sum': 2, 'code': 'C'}]

关于Python 从字典列表中获取最大值和最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32507399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com