我有一个字典
{'a': 'first', 'b': 'second'}
不过,我需要按另一种顺序排列这个字典:
{'b': 'second', 'a': 'first'}
最佳方法是什么?
我有一个字典
{'a': 'first', 'b': 'second'}
不过,我需要按另一种顺序排列这个字典:
{'b': 'second', 'a': 'first'}
最佳方法是什么?
字典没有顺序,因此无法进行排序。
如果你使用的是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')])
如果你正在使用旧版本的Python,你可以从http://code.activestate.com/recipes/576693/获取回溯。
OrderedDict
不是已经排序的,也不能手动排序,Python 中没有一种数据结构是自动排序的(即总是自动排序)。 - Rosh Oxymoron字典没有顺序。
你可以获取键,按照自己的方式排序,然后以这种方式迭代字典值。
keys = myDict.keys()
keys = sorted(keys) # order them in some way
for k in keys:
v = myDict[k]
keys.sort()
。sorted()
会返回一个新的列表,但不会修改传递的对象。 - ThiefMasterdict
是可排序的(您始终可以对其应用sorted
),但键的默认顺序无法影响。 - sophros