我需要得到dict的排序表示,按值的降序排序(dict中的最大值将首先显示)。在
样品:
mydict={u'jon':30,u'den':26,u'rob':42,u'jaime':31}
我要让他们知道
^{pr2}$我试过了
from operator import itemgetter
sortedvalues=sorted(mydict,key=itemgetter(1))
当我打印清单时
[u'jaime', u'den', u'rob', u'jon']
这个列表无序!我是否遗漏了一些关于排序内置项的用法的信息?或者我没有正确地使用item getter?在
迭代字典(这是
sorted
函数所做的)将只给你它的键:相反,您需要同时对键和值进行排序-为此,您可以使用},这对于大dict更有效):
^{pr2}$mydict.items()
(或{然后您的代码将按预期工作:
如果多个键具有相同的值,您可能还希望使用dict键作为辅助排序值进行排序:
这是一个有趣的问题,因为如果键是另一个不可索引的类型(比如整数),则不会导致错误,这是由一系列微妙的事情造成的:
iter(mydict)
的等价词迭代字典,它将调用mydict.__iter__()
iter(mydict)
与{itemgetter(1)
将处理一个字符串值,从而获得字符串中的第二个字符。在如果任何字符串也有1个字符的长度,那么您所拥有的代码就会因索引器错误而失败,您只是幸运而已。(或者没有,这取决于您如何看待它,因为获得索引器会让您更快地意识到问题。)
如果只需要这些值,您需要做的是:
如果你想要钥匙成对的话
^{pr2}$它们按名称中的第二个字母排序;迭代dict得到它的键。在
相关问题 更多 >
编程相关推荐