如何获取 python 中特定键的对象 minimum/maximum 值?
How to get object minimum/maximum value of specific key in python?
我有一个这样的列表:
list = [
{'price': 2, 'amount': 34},
{'price': 7, 'amount': 123},
{'price': 5, 'amount': 495}
]
如何获取 python 中特定键的 minimum/maximum 值的对象?
有了这个我可以获得最小值:
min(obj['price'] for obj in list) # 2
但我想要得到的是一个完整的对象
{'price': 2, 'amount':34}
我怎样才能做到这一点?有没有不用foreach等的简单方法?
为您的 min
函数使用 key
:
from operator import itemgetter
min(my_list, key=itemgetter('price'))
也不要使用 python 的 built-in key-words and/or 数据结构名称作为变量和对象名称。它会通过隐藏 built-in 名称来混淆解释器。
要添加 Kasramvd 答案,您也可以使用 lambda 执行此操作。
>>> foo = [
... {'price': 2, 'amount': 34},
... {'price': 7, 'amount': 123},
... {'price': 5, 'amount': 495}
... ]
>>> max(foo, key=lambda x: x['price'])
{'amount': 123, 'price': 7}
>>> min(foo, key=lambda x: x['price'])
{'amount': 34, 'price': 2}
>>>
我有一个这样的列表:
list = [
{'price': 2, 'amount': 34},
{'price': 7, 'amount': 123},
{'price': 5, 'amount': 495}
]
如何获取 python 中特定键的 minimum/maximum 值的对象? 有了这个我可以获得最小值:
min(obj['price'] for obj in list) # 2
但我想要得到的是一个完整的对象
{'price': 2, 'amount':34}
我怎样才能做到这一点?有没有不用foreach等的简单方法?
为您的 min
函数使用 key
:
from operator import itemgetter
min(my_list, key=itemgetter('price'))
也不要使用 python 的 built-in key-words and/or 数据结构名称作为变量和对象名称。它会通过隐藏 built-in 名称来混淆解释器。
要添加 Kasramvd 答案,您也可以使用 lambda 执行此操作。
>>> foo = [
... {'price': 2, 'amount': 34},
... {'price': 7, 'amount': 123},
... {'price': 5, 'amount': 495}
... ]
>>> max(foo, key=lambda x: x['price'])
{'amount': 123, 'price': 7}
>>> min(foo, key=lambda x: x['price'])
{'amount': 34, 'price': 2}
>>>