我是Python的新手,已经卡在一个问题上好几天了。
有一个像这样的字典列表:
dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
我需要根据price
的最大值输出prod
中的值。
这是期望的结果:Green
我已经尝试了很多方法,基于我在SO上找到的信息:
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)
输出:
蓝色
(几乎正确,但是“蓝色”不是价格
的最大值!)
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': '蓝色', '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)
Output:
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)
Output:
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)
Output:
9.718