[英]How can I get the highest value from a dictionary nested in a list
以下是我正在编写的一个小型盲注拍卖程序的清单。 在最后一次出价之后,我需要遍历列表中的所有出价,并打印出带有投标人姓名的最高出价。 我怎么能 go 关于那个? 有什么帮助吗?
bids = [{'don': 200}, {'alex': 400}, {'peter': 550}]
您可以将max
与自定义键 function 一起使用:
>>> next(iter(max(bids, key=lambda d: next(iter(d.values())))))
'peter'
最烦人的部分是从字典中提取键/值的next(iter(...))
部分。
你有什么理由使用这个数据结构而不是像{'don': 200, 'alex': 400, 'peter': 550}
这样的简单字典? 在这种情况下,它会更容易:
>>> max(bids, key=lambda name: bids[name])
'peter'
您可以根据每个字典中的值对列表进行排序并打印出最后一项:
bids = [{'don': 200}, {'alex': 400}, {'peter': 550}]
s = sorted(bids, key=lambda x:list(x.values())[0])
print(s[-1])
#{'peter': 550}
更新:
bids = [{'don': 200}, {'alex': 400}, {'peter': 550}]
bids.sort(key=lambda x:list(x.values())[0], reverse=True)
print(f'The winner is {list(bids[0].keys())[0]} with a ${list(bids[0].values())[0]} bid.')
#The winner is peter with a $550 bid.
我认为使用 {'name':'bidername','bid':bid} 让它变得如此简单。 之后,您可以对其进行排序并取最后一个,或者您可以迭代出价并找到最高出价。
bids = [{'name': 'don', 'bid': 200}, {'name': 'alex', 'bid': 400}, {'name': 'peter', 'bid': 550}]
print(sorted(bids, key=lambda x: x['bid']))
如果您只想获得最高价值。
bids = [{'don': 200}, {'alex': 400}, {'peter': 550}]
bidder = None
values = []
for bid in bids:
for k, v in bid.items():
values.append(v)
bidder = max(values)
print(bidder)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.