2024-05-20 20:46:03 发布
网友
下面是我正在编写的一个小型盲拍卖程序的列表。在最后一次出价之后,我需要循环浏览列表中的所有出价,并打印出最高的一个,上面有投标人的名字。我该怎么做呢?有什么帮助吗
bids = [{'don': 200}, {'alex': 400}, {'peter': 550}]
我认为使用{'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']))
可以将max与自定义键函数一起使用:
max
>>> next(iter(max(bids, key=lambda d: next(iter(d.values()))))) 'peter'
其中最烦人的部分是从字典中提取键/值的next(iter(...))部分
next(iter(...))
有什么理由使用这个数据结构而不是像{'don': 200, 'alex': 400, 'peter': 550}这样的简单字典吗?在这种情况下,更容易:
{'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}使它变得非常简单。在那之后,你可以对它进行排序并选择最后一个,或者你可以迭代出价并找到最高的出价
可以将
max
与自定义键函数一起使用:其中最烦人的部分是从字典中提取键/值的
next(iter(...))
部分有什么理由使用这个数据结构而不是像
{'don': 200, 'alex': 400, 'peter': 550}
这样的简单字典吗?在这种情况下,更容易:您可以根据每个字典中的值对列表进行排序,并打印出最后一项:
更新:
相关问题 更多 >
编程相关推荐