首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >换键位置字典

换键位置字典
EN

Stack Overflow用户
提问于 2022-07-29 12:27:59
回答 2查看 33关注 0票数 1

我正在设法改变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'}

EN

回答 2

Stack Overflow用户

发布于 2022-07-29 12:43:59

通过浏览一些旧的帖子,我偶然发现了the question same as this one.

代码语言:javascript
运行
复制
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))

输出

代码语言:javascript
运行
复制
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'}
票数 2
EN

Stack Overflow用户

发布于 2022-07-29 12:48:34

从3.7开始,Dicts按插入顺序进行“正式”维护。他们在3.6中被订购,但在3.7之前没有得到保证。在3.6之前,您无法做任何事情来影响键出现的顺序。

但是可以用OrderedDict代替。我不明白你的“但它给了我一个清单”的反对-我看不出有什么意义,这是真的。

你的例子:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73166745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档