Python 里如何将 dict 按 value 排序?

下面这个字典 dict,如何按照 value 重新排序?

foo = {
    a: 2,
    b: 1,
    c: 6,
    d: 4,
    e: 3,
    f: 5
}
阅读 9.1k
2 个回答

dict 本身是无序的,这时候你需要的是OrderedDict

顺带说下你这个dict有问题,key在这里应当是字符串吧,来看栗子:

from collections import OrderedDict

foo = OrderedDict([
    ('a', 2),
    ('b', 1),
    ('c', 6),
    ('d', 4),
    ('e', 3),
    ('f', 5)
])
bar = OrderedDict(sorted(foo.items(), key=lambda x: x[1]))
print(bar)

直接打印出来好像没dict好看,用json加工一下,结果如下:

[1]In: import json
[2]In: print(json.dumps(bar, indent=4))

[3]Out:
{
    "b": 1,
    "a": 2,
    "e": 3,
    "d": 4,
    "f": 5,
    "c": 6
}

EOF

[v for v in sorted(foo.values())]

以及,这个字典是不是有问题啊。。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题