gol*_*ine 4 python sorting dictionary
我想让每个字典的特定元素成为字典列表中的第一个元素。我该如何做到这一点,或者考虑到字典是无序的,这是否可能?
我不想单独使用 .sort() 或 OrderedDict,因为两者都不会将所需的元素带到键的顶部,因为键是按字母顺序排序的。有没有办法在Python 2.7中结合使用lambda关键字和sort来做到这一点?
前任:
我想b成为第一把钥匙
{'a': 1, 'b': 2, 'c': 3}
{'b': 2, 'a': 1, 'c': 3}
Run Code Online (Sandbox Code Playgroud)
语境:
我有一大堆字典,其中每个字典代表一堆有关工作的信息。每个字典都有一个识别该职位的代码。我的上级希望将此代码移至其字典的顶部。
正如其他人指出的那样,自 Python 3.6 以来,Python 的字典现在是排序的(按插入顺序)。我知道将单个项目移动到字典前面的最干净的方法是使用pop():
d = {'a': 1, 'b': 2, 'c': 3} # original dict
d = {'b': d.pop('b'), **d} # new order
print(d)
# {'b': 2, 'a': 1, 'c': 3}
Run Code Online (Sandbox Code Playgroud)
Python保证从左到右的执行顺序,因此您知道pop发生在扩展之前**d,这意味着'b'将发生在**d扩展的前面而不是后面。
如果您要多次执行此操作并且不想将密钥写入两次,或者密钥将是计算表达式,则可以创建一个辅助函数:
def plop(d, key):
return {key: d.pop(key)}
d = {'a': 1, 'b': 2, 'c': 3} # original dict
d = {**plop(d, 'b'), **d} # new order
print(d)
# {'b': 2, 'a': 1, 'c': 3}
Run Code Online (Sandbox Code Playgroud)