根据首选顺序更改字典键的顺序
Changing order of dictionaries keys based on preferred order
输入的是字典,例如:
{'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
中的键在最后。
建议算法:
- 创建一个新的、最初为空的字典;
- 迭代
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?;
- 您可以在 Whosebug 上搜索“按键排序字典”,但请注意大多数答案已过时,建议使用
collections.OrderedDict
而不是 dict
,因为 Python 3.7.
输入的是字典,例如:
{'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
中的键在最后。
建议算法:
- 创建一个新的、最初为空的字典;
- 迭代
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?;
- 您可以在 Whosebug 上搜索“按键排序字典”,但请注意大多数答案已过时,建议使用
collections.OrderedDict
而不是dict
,因为 Python 3.7.