gpt4 book ai didi

python - 如何按字典顺序对字典中的值进行排序?

转载 作者:行者123 更新时间:2023-11-28 22:14:12 25 4
gpt4 key购买 nike

我这里有这段代码:

def most_popular_book(book_loans):
vBL = book_loans.values()
kBL = book_loans.keys()
items = book_loans.items()
print items
kBL = sorted(kBL, key=str.lower)
mvBL = max(vBL)
for key,vaule in items:
if vaule == mvBL:
return key

我使用此代码的目标是获取具有最大值的键,如果 2 个键具有相同的值,则选择字典顺序中排在第一位的那个。

现在代码的第一部分工作正常!但是我在第二部分遇到了麻烦。我阅读了有关该主题的一些代码,但一直无法找到使其工作的方法。

代码应如何工作的示例:

print most_popular_book({'harry potter':['yossi','adam'], 
'lilo and stich':['yossi', "adam"], 'catch-22':['adam'] })

'harry potter'

(它应该打印哈利波特)但我的代码打印出 'lilo and stich'

另一个例子:

{'the little prince': ['yossi'], 'harry potter': ['yossi', 'assaf'], 
'catch-22': ['yossi', 'dana']}

'catch-22'

(此输出正常工作)

最佳答案

您可以通过以下方式获得完全排序的列表:

fancy = sorted( book_loans.items(), key = lambda x:(-len(x[1]), x[0]))

然后开始第一个。

它的工作原理是将 元组 定义为排序条件 - 元组 按第一个值排序,如果第一个值绘制等,则按第二个值排序。

-len() 排序会“反转”它(您也可以指定 reverse=True 参数进行排序 - 任何一个都有效。

fancy = sorted( {'harry potter':['yossi','adam'], 'lilo and stich':['yossi', "adam"],
'catch-22':['adam'] }.items(), key = lambda x:(-len(x[1]), x[0]))

print(fancy)
print(fancy[0][0])

输出:

[('harry potter', ['yossi', 'adam']), ('lilo and stich', ['yossi', 'adam']),
('catch-22', ['adam'])]

harry potter

关于python - 如何按字典顺序对字典中的值进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53527432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com