我想让每个字典的特定元素成为字典列表中的第一个元素。我怎么能这样做,或者甚至可能因为词典是无序的?
我不想单独使用.sort()或OrderedDict,因为两者都不会将所需的元素带到键的顶部,因为键是按字母顺序排列的。有没有办法在Python 2.7中结合使用lamba关键字来实现这一点?
例如:
我希望b
成为第一个关键
{'a': 1, 'b': 2, 'c': 3}
{'b': 2, 'a': 1, 'c': 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版本,构建,代码上下文等之间工作。如果你想要一个有序的数据类型,你需要的不是字典。