我怎样才能按键对词典排序?

  • 问题:
  • {2:3,1:89,4:5,3:0}{1:89,2:3,3:0,4:5}的好方法是什么?

  • 答案:
  • 标准的Python字典是无序的。即使对(键,值)对进行排序,也不能以保持顺序的方式将它们存储在dict

    最简单的方法就是使用OrderedDict,它会记住元素的插入顺序:

    In [1]: import collections

    In [2]: d = {2:3, 1:89, 4:5, 3:0}

    In [3]: od = collections.OrderedDict(sorted(d.items()))

    In [4]: od
    Out[4]: OrderedDict([(1, 89), (2, 3), (3, 0), (4, 5)])

    别在意od的打印方式;它会按预期工作的:

    In [11]: od[1]
    Out[11]: 89

    In [12]: od[3]
    Out[12]: 0

    In [13]: for k, v in od.iteritems(): print k, v
    ....:
    1 89
    2 3
    3 0
    4 5

    对于python3用户,需要使用.items()而不是.iteritems()

    In [13]: for k, v in od.items(): print(k, v)
    ....:
    1 89
    2 3
    3 0
    4 5