问题描述
输入是字典,例如:
{'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','occupation': 'astronaut'}
键 location
未添加到字典中,不在 preferred_order
中的键位于末尾。
解决方法
推荐算法:
- 创建一个新的、初始为空的字典;
- 迭代
preferred_order
:对于key
中的每一个preferred_order
,如果旧字典中存在key: value
,则将其添加到新字典中,并将其从旧字典中删除; - 对于旧字典中剩余的每个
key: value
对,将其添加到新字典中。
对于第 3 步,您可以使用 dict.update
或 |=
。
进一步阅读:
-
documentation on
dict.update
and|=
; -
more about
|=
; - How do I sort a dictionary by value?;
- 您可以在 stackoverflow 上搜索“按键排序字典”,但请注意,大多数答案已过时,建议使用
collections.OrderedDict
而不是dict
,后者自 Python 3.7 起不再需要。