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)