根据首选顺序更改字典键的顺序

Posted

技术标签:

【中文标题】根据首选顺序更改字典键的顺序【英文标题】:Changing order of dictionaries keys based on preferred order 【发布时间】:2021-09-07 03:42:38 【问题描述】:

输入是字典,例如:

'first_name':'Jane', 'occupation': 'astronaut', 'age':27, 'last_name':'Doe'

需要将键重新排列为特定顺序,在列表中给出,例如:

preferred_order = ['first_name', 'last_name', 'age', 'location']

字典可能不包含preferred_order 列表中的所有键,并且可能包含未出现在列表中的键。

在这种特定情况下,排序的结果应该是:

'first_name':'Jane', 'last_name':'Doe', 'age':27, 'occupation': 'astronaut'

location 没有被添加到字典中,不在 preferred_order 中的键在末尾。

【问题讨论】:

请重新填写tour,阅读what's on-topic here、How to Ask和question checklist,并提供minimal reproducible example。 “为我实现此功能”与此站点无关。你必须诚实地尝试,然后就你的算法或技术提出一个具体问题 @PranavHosangadi 好的,对不起 【参考方案1】:

建议算法:

    创建一个新的、最初为空的字典; 遍历preferred_order:对于preferred_order中的每个key,如果旧字典中存在key: value,则将其添加到新字典中,并将其从旧字典中删除; 对于旧字典中剩余的每个 key: value 对,将其添加到新字典中。

对于第 3 步,您可以使用 dict.update|=

进一步阅读:

documentation on dict.update and |=; more about |=; How do I sort a dictionary by value?; 您可以在 *** 上搜索“按键排序字典”,但请注意,大多数答案都已过时,建议使用 collections.OrderedDict 而不是 dict,自 Python 3.7 起不再需要。

【讨论】:

非常感谢!

以上是关于根据首选顺序更改字典键的顺序的主要内容,如果未能解决你的问题,请参考以下文章

服务器与本地机器上dict键的随机顺序[重复]

javascript:更改所有键的值顺序

json.loads 更改传递的字符串中给定键的顺序[重复]

为啥map.put不维护键的顺序[重复]

将字典值顺序添加到 scipy 函数

如何在多图中按排序顺序打印键的值