按降序排序字典

时间:2015-03-13 07:04:24

标签: python dictionary

我有一本字典,我需要按照MI值的降序对其进行排序。然后按照降序顺序逐字打印dict中的内容' hi'

我的编码:

d = dict()
for item in a:
    specificy = c[item]
    MI1= specificx/float(specificy)
    MI2= MI1*specificx
    M13= specificx*specificy
    MI = MI1* math.log(MI1/float(MI2))
    d[x + ' ' + item] = MI

print d    
for k,v in d:
    print k + v + 'hi'

3 个答案:

答案 0 :(得分:1)

这应该做:

import operator
for k in sorted(d.items(), key=operator.itemgetter(1), reverse=True):
    print(k + d[k] + 'hi')

它的工作原理是获取字典中的项目,按值排序,反转,然后打印。

另请参阅:https://stackoverflow.com/a/613218/565635

答案 1 :(得分:0)

使用x的键更改索引排序为0

for k,v in sorted(d.items(), key=lambda x: x[0], reverse=False):
    print k + v + 'hi'

使用x的值更改索引排序为1

for k,v in sorted(d.items(), key=lambda x: x[1], reverse=False):
    print k + v + 'hi'

答案 2 :(得分:0)

要对项目排序字典,您可以使用

sorted(d, key=d.__getitem__)

在您的情况下,代码变为

for k in sorted(d, key=d.__getitem__, reverse=True):
    print(k + d[k] + "hi")

说明

在Python中编写

d[k]

评估的是

d.__getitem__(k)

所以d.__getitem__d是字典时,给定一个键的函数返回与字典中该键相关联的值。

sorted是一个预定义的函数,它返回一个序列的排序版本并接受一个可选参数(不幸地命名为key,但请注意,key与这里的字典无关)。此参数可用于确定应执行哪些排序比较; sorted还支持另一个可选参数reversed,您可以在其中确定是否需要上升或后代排序。

最后,当字典用作序列时(例如将字典传递给sorted或在for中迭代它),您获得的是字典。

这例如暗示sorted(d, key=d.__getitem__)返回根据值排序的字典的键。