如何按值降序显示字典?

2024-09-25 18:23:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典如下:

{'aapl': 4.0,
 'abandon': 4.0,
 'absenc': 3.0,
 'accept': 1.0,
 'access': 3.0,
 'accessori': 4.0,
 'accord': 3.0,
 'achiev': 1.0,
 'acquir': 1.5,
 'acquisit': 2.3333333333333335,
 'across': 5.0,
 'activ': 2.0,
 'ad': 2.2692307692307692,
 'add': 2.5,
 'addit': 2.8333333333333335,
}

如何按分数(降序)显示它们?在

我听说有一种方法可以通过元组或者其他什么来实现?在


Tags: add字典accessadacrossacceptaccordaapl
3条回答
mydict = {'aapl': 4.0,
 'abandon': 4.0,
 'absenc': 3.0,
 'accept': 1.0,
 'access': 3.0,
 'accessori': 4.0,
 'accord': 3.0,
 'achiev': 1.0,
 'acquir': 1.5,
 'acquisit': 2.3333333333333335,
 'across': 5.0,
 'activ': 2.0,
 'ad': 2.2692307692307692,
 'add': 2.5,
'addit': 2.8333333333333335,
}
sorted([(y,x) for x,y in mydict.items()], reverse=True)

这会产生:

^{2}$

这样做的副作用是按键对相同的值进行排序(例如,对于value==3.0,'absenc'<;'access'<;'accord')

这是我知道的最快的方法:

d = { ... } # your dictionary
for name, score in sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True):
  print score, name
>>> D={'aapl': 4.0,
...  'abandon': 4.0,
...  'absenc': 3.0,
...  'accept': 1.0,
...  'access': 3.0,
...  'accessori': 4.0,
...  'accord': 3.0,
...  'achiev': 1.0,
...  'acquir': 1.5,
...  'acquisit': 2.3333333333333335,
...  'across': 5.0,
...  'activ': 2.0,
...  'ad': 2.2692307692307692,
...  'add': 2.5,
...  'addit': 2.8333333333333335,
... }
>>> sorted(D, key=D.get, reverse=True)
['across', 'aapl', 'accessori', 'abandon', 'accord', 'access', 'absenc', 'addit', 'add', 'acquisit', 'ad', 'activ', 'acquir', 'accept', 'achiev']
>>> 

如果你也想要这些值

^{2}$

相关问题 更多 >