gpt4 book ai didi

Python 2.5 字典 2 键排序

转载 作者:太空狗 更新时间:2023-10-29 17:04:03 25 4
gpt4 key购买 nike

我有一个包含 200,000 个项目的字典(键是字符串,值是整数)。

什么是最好/最 pythonic 的方式来打印按降序值然后升序键排序的项目(即 2 键排序)?

 a={ 'keyC':1, 'keyB':2, 'keyA':1 }
b = a.items()
b.sort( key=lambda a:a[0])
b.sort( key=lambda a:a[1], reverse=True )
print b
>>>[('keyB', 2), ('keyA', 1), ('keyC', 1)]

最佳答案

您不能对字典进行排序。您必须对项目列表进行排序。

以前的版本是错误的。当你有一个数值时,很容易以相反的顺序排序。这些会做到这一点。但这并不普遍。这仅适用于该值是数字。

a = { 'key':1, 'another':2, 'key2':1 }

b= a.items()
b.sort( key=lambda a:(-a[1],a[0]) )
print b

这里有一个替代方案,使用显式函数而不是 lambda 和 cmp 而不是 key 选项。

def valueKeyCmp( a, b ):
return cmp( (-a[1], a[0]), (-b[1], b[0] ) )

b.sort( cmp= valueKeyCmp )
print b

更通用的解决方案实际上是两种不同的排序

b.sort( key=lambda a:a[1], reverse=True )
b.sort( key=lambda a:a[0] )
print b

关于Python 2.5 字典 2 键排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157424/

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