我正在设法改变python字典中条目的顺序。我从这样的事情开始
{'first_name': 'Jack', 'age': '40', 'second_name': 'Sparrow', 'encounter_time': '10/May/2022'}
我想要这样的东西
{'first_name': 'Jack', 'second_name': 'Sparrow', 'age': '40', 'encounter_time': '10/May/2022'}
发布于 2022-07-29 12:43:59
通过浏览一些旧的帖子,我偶然发现了the question same as this one.
from collections import OrderedDict
kv = OrderedDict({'first_name': 'Jack', 'age': '40', 'second_name': 'Sparrow', 'encounter_time': '10/May/2022'})
order = ['first_name', 'second_name', 'age', 'encounter_time']
for key in order:
kv.move_to_end(key)
print(kv)
print(dict(kv))
输出
OrderedDict([('first_name', 'Jack'), ('second_name', 'Sparrow'), ('age', '40'), ('encounter_time', '10/May/2022')])
{'first_name': 'Jack', 'second_name': 'Sparrow', 'age': '40', 'encounter_time': '10/May/2022'}
发布于 2022-07-29 12:48:34
从3.7开始,Dicts按插入顺序进行“正式”维护。他们在3.6中被订购,但在3.7之前没有得到保证。在3.6之前,您无法做任何事情来影响键出现的顺序。
但是可以用OrderedDict代替。我不明白你的“但它给了我一个清单”的反对-我看不出有什么意义,这是真的。
你的例子:
from collections import OrderedDict
d = OrderedDict({'first_name': 'Jack', 'age': '40', 'second_name': 'Sparrow', 'encounter_time': '10/May/2022'})
d # keeps the insertion order
OrderedDict([('first_name', 'Jack'), ('age', 40), ('second_name', 'Sparrow'), ('encounter_time', '10/May/2022')])
key_order= ['first_name', 'second_name', 'age', 'encounter_time'] # the order you want
for k in key_order: # a loop to force the order you want
d.move_to_end(k)
d # which works fine
OrderedDict({'first_name': 'Jack', 'second_name': 'Sparrow', 'age': '40', 'encounter_time': '10/May/2022'})
也见这个答案See also this answer
https://stackoverflow.com/questions/73166745
复制相似问题