我是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
先谢了。
1条答案
按热度按时间j13ufse21#
对于
key
参数,您需要将价格值转换为浮点数:这将输出: