如何将特定键作为字典中的第一个键?

时间:2013-08-08 19:53:16

标签: python sorting dictionary

我想让每个字典的特定元素成为字典列表中的第一个元素。我怎么能这样做,或者甚至可能因为词典是无序的?

我不想单独使用.sort()或OrderedDict,因为两者都不会将所需的元素带到键的顶部,因为键是按字母顺序排列的。有没有办法在Python 2.7中结合使用lamba关键字来实现这一点?

例如:

我希望b成为第一个关键

{'a': 1, 'b': 2, 'c': 3}


{'b': 2, 'a': 1, 'c': 3}

背景:

我有一大堆字典,每个字典代表一堆关于工作的信息。每个字典都有一个标识作业的代码。我的上级希望将此代码移到字典的顶部。

3 个答案:

答案 0 :(得分:3)

将dict包装在列表中并移出代码。而不是

data = {'code':'this is the code', 'some':'other', 'stuff':'here'}

DO

data = ['this is the code', {'some':'other', 'stuff':'here'}]

答案 1 :(得分:2)

Dicts没有任何顶部或底部。你可以尝试这样的事情:

>>> from itertools import chain
>>> dic = {'a': 1, 'b': 2, 'c': 3}
>>> key = 'b'
for k in chain(key, (dic.viewkeys()-key)):
    print k, dic[k]
...     
b 2
a 1
c 3

最好使用OrderedDict

>>> from collections import OrderedDict
>>> key = 'b'
>>> dic1 = OrderedDict((k,dic[k]) for k in chain(key, (dic.viewkeys()-key)))
>>> next(iter(dic1))
'b'

答案 2 :(得分:1)

  

甚至可以假设字典是无序的吗?

不,这是不可能的。你找到的任何解决方案似乎都不能保证在python版本,构建,代码上下文等之间工作。如果你想要一个有序的数据类型,你需要的不是字典。