字典按不正确的顺序排序

时间:2018-04-13 20:14:21

标签: 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
danny: 3

我期待:

bob: 1
alan: 2
danny: 3
carl: 4

这里有什么问题?

2 个答案:

答案 0 :(得分:7)

您按名称的第二个字母对人名进行排序,而不是按值对键值对进行排序。 'carl''danny'都有第二个字母'a'

如果你想要一个dict的键值对,请使用它的items()

for k, v in sorted(mydict.items(), key=operator.itemgetter(1)):
    print('{}: {}'.format(k, v))

答案 1 :(得分:2)

您需要传递mydict.items()。这有效:

cc_library(
  name = "target",
  srcs = [
    "@local_jdk//:jni_header",
    "@local_jdk//:jni_md_header-linux",
    "hello.cc",
  ],
  includes = [
    "external/local_jdk/include",
    "external/local_jdk/include/linux",
  ],
  linkstatic = 1
)