我有一本字典: -
higharr = {'Alex':2,
'Steve':3,
'Andy':4,
'Wallace':6,
'Andy':3,
'Andy':5,
'Dan':1,
'Dan':0,
'Steve':3,
'Steve':8}
for score in sorted(higharr.values(), reverse=True):
print (score)
我想打印带有值的键,其值以字母顺序递减。下降部分正在工作,但我不确定如何在其左侧添加相应的键。
谢谢
答案 0 :(得分:0)
您可以使用其他数据结构,因为您有重复的密钥。 但总的来说,你可能会考虑这个:
from operator import itemgetter
for i in sorted(higharr.items(), key=itemgetter(1), reverse=True):
print i
答案 1 :(得分:0)
这就是你在寻找什么?
for key, score in sorted(higharr.values(), reverse=True):
print (key, score)
答案 2 :(得分:0)
你关闭了。枚举字典的项目并使用自定义排序键:
>>> for name, score in sorted(higharr.iteritems(), key=lambda item:item[1], reverse=True):
... print name, score
...
Steve 8
Wallace 6
Andy 5
Alex 2
Dan 0
>>>
答案 3 :(得分:0)
首先,对于词典中的哪些条目是“键”以及哪些是“值”,可能会有一些混淆。在Python中,通过{key:value}形成具有键值对的字典。因此,在higharr中,键是名称,值是整数 名字的权利。
正如其他人所提到的,higharr可能无法完全按照您的预期运行,因为字典的键(名称)不是唯一的:
>>> higharr = {'Alex':2,
'Steve':3,
'Andy':4,
'Wallace':6,
'Andy':3,
'Andy':5,
'Dan':1,
'Dan':0,
'Steve':3,
'Steve':8}
>>> higharr
{'Steve': 8, 'Alex': 2, 'Wallace': 6, 'Andy': 5, 'Dan': 0}
如您所见,您添加的后续键值对将覆盖之前的键值对。 话虽这么说,您可以在字典中对所有唯一键进行排序和打印,如下所示:
>>> for entry in sorted(higharr.items(), key = lambda x: x[1], reverse=True)
... print(entry)
...
('Steve', 8)
('Wallace', 6)
('Andy', 5)
('Alex', 2)
('Dan', 0)
如果你想通过按字母顺序降序对键进行排序,你可以做同样的事情:
>>> for entry in sorted(higharr.items(), key=lambda x: x[0], reverse=True):
... print(entry)
...
('Wallace', 6)
('Steve', 8)
('Dan', 0)
('Andy', 5)
('Alex', 2)