[英]Find maximum value in a list of dicts
我是 Python 的新手,幾天來一直卡在一個點上。
有一個像這樣的字典列表:
dd = [{'prod': 'White', 'price': '80.496'}, {'prod': 'Blue', 'price': '9.718'}, {'prod': 'Green', 'price': '7161.3'}]
我需要 output prod
中的值基於price
的最大值。
這是期望的結果: 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)
Output: 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)
Output: {'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)
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
在所有情況下,最大值都是 9.718 而不是 7161.3。 我怎樣才能解決這個問題? 我正在使用運行 Python 3.9 的 MS Visual Studio。
您需要將價格值轉換為key
參數的浮點數:
max(dd, key=lambda x: float(x['price']))['prod']
這輸出:
Green
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.