我有一本字典,我需要按照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'
答案 0 :(得分:1)
这应该做:
import operator
for k in sorted(d.items(), key=operator.itemgetter(1), reverse=True):
print(k + d[k] + 'hi')
它的工作原理是获取字典中的项目,按值排序,反转,然后打印。
答案 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__)
返回根据值排序的字典的键。