字典中的键顺序

Qia*_*iao 28 python dictionary

我有一本字典

{'a': 'first', 'b': 'second'}
Run Code Online (Sandbox Code Playgroud)

但是,我需要不同顺序的字典:

{'b': 'second', 'a': 'first'}
Run Code Online (Sandbox Code Playgroud)

做这个的最好方式是什么?

Thi*_*ter 41

字典不是订购的.所以没有办法做到这一点.

如果你有python2.7 +,你可以使用collections.OrderedDict- 在这种情况下你可以使用.items()然后反转它来检索项目列表并OrderedDict从反向列表中创建一个新的:

>>> od = OrderedDict((('a', 'first'), ('b', 'second')))
>>> od
OrderedDict([('a', 'first'), ('b', 'second')])
>>> items = od.items()  # list(od.items()) in Python3
>>> items.reverse()
>>> OrderedDict(items)
OrderedDict([('b', 'second'), ('a', 'first')])
Run Code Online (Sandbox Code Playgroud)

如果你使用的是较旧的python版本,你可以从http://code.activestate.com/recipes/576693/获得一个backport.

  • 确切地说,您的示例中的两个词典都是等效的. (2认同)
  • 排序和订购是不同的事情.`OrderedDict`没有排序,不能手动排序,Python中没有数据结构是排序数据结构(即总是自动排序). (2认同)

edu*_*ffy 7

字典没有订单.

您可以获取密钥,按照您的喜好对它们进行排序,然后以这种方式迭代字典值.

keys = myDict.keys()
keys = sorted(keys)  # order them in some way
for k in keys:
   v = myDict[k]
Run Code Online (Sandbox Code Playgroud)