繁体   English   中英

如何从嵌套在列表中的字典中获取最大值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM