Python 字典排序顺序不正确
请参见下面的我的代码:Python 字典排序顺序不正确,python,dictionary,Python,Dictionary,请参见下面的我的代码: import operator mydict = {'carl': 4, 'alan': 2, 'bob': 1, 'danny': 3} for i in sorted(mydict,key=operator.itemgetter(1),reverse=True): print ("%s: %d" % (i,mydict[i])) 我得到了输出: bob: 1 alan: 2 carl: 4 dan
import operator
mydict = {'carl': 4,
'alan': 2,
'bob': 1,
'danny': 3}
for i in sorted(mydict,key=operator.itemgetter(1),reverse=True):
print ("%s: %d" % (i,mydict[i]))
我得到了输出:
bob: 1
alan: 2
carl: 4
danny: 3
我期待着:
bob: 1
alan: 2
danny: 3
carl: 4
这里怎么了?您是按姓名的第二个字母对姓名进行排序,而不是按值对键值对进行排序
'carl'
和'danny'
都有第二个字母'a'
如果需要dict的键值对,请使用其items()
:
您需要传递mydict.items()。这项工作:
import operator
mydict = {'carl': 4,
'alan': 2,
'bob': 1,
'danny': 3}
# for i in sorted(mydict,key=operator.itemgetter(1),reverse=True):
# print ("%s: %d" % (i,mydict[i]))
sorted_x = sorted(mydict.items(), key=operator.itemgetter(1))
print(sorted_x)
如果试图按值排序,则需要传递
mydict.items()
,并修改循环以获取两个循环变量。
import operator
mydict = {'carl': 4,
'alan': 2,
'bob': 1,
'danny': 3}
# for i in sorted(mydict,key=operator.itemgetter(1),reverse=True):
# print ("%s: %d" % (i,mydict[i]))
sorted_x = sorted(mydict.items(), key=operator.itemgetter(1))
print(sorted_x)