python-3.x 查找字典列表中的最大值

qni6mghb  于 2023-01-10  发布在  Python
关注(0)|答案(1)|浏览(125)

我是Python的新手,已经在一个地方停留了好几天了。
下面是一系列的格言:
第一个月
需要根据price输出prod中的值
结果一定是这样:Green
I have tried many ways including those found on stackoverflow.com:

dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
L = [v for v in dd if v['price']==max([u['price']for u in dd])][0]['prod']
print(L)

输出:Blue
(几乎正确,但"Blue"没有price!)

dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
L = max(dd, key=lambda x:x['price'])
print(L)

输出:{'prod': 'Blue', 'price': '9.718'}

dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
L = max(e['price'] for e in dd)
print(L)

输出:9.718

from operator import itemgetter
dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
L = max(map(itemgetter('price'), dd))
print(L)

输出:9.718

dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
seq = [x['price'] for x in dd]
L = max(seq)
print(L)

输出:9.718
为什么在所有情况下最大值都是9.718而不是7161.3?我需要做什么?如何修复?
附加说明Python 3.9,微软Visual Studio
先谢了。

j13ufse2

j13ufse21#

对于key参数,您需要将价格值转换为浮点数:

max(dd, key=lambda x: float(x['price']))['prod']

这将输出:

Green

相关问题