【发布时间】:2021-10-15 20:55:09
【问题描述】:
所以我有这本字典:
{
'TEST_DEMON_2':
{'placement': '2',
'owner': 'Owner2',
'verifier': 'Verifier2',
'difficulty': 'Medium',
'level_id': '2'},
'TEST_DEMON_4':
{'placement': '4',
'owner': 'Owner4',
'verifier': 'Verifier4',
'difficulty': 'Medium',
'level_id': '4'},
'TEST_DEMON_3':
{'placement': '3',
'owner': 'Owner3',
'verifier': 'Verifier3',
'difficulty': 'Medium',
'level_id': '3'},
'TEST_DEMON_1':
{'placement': '1',
'owner': 'Owner1',
'verifier': 'Verifier1',
'difficulty': 'Easy',
'level_id': '1'}
}
我有一个在其中添加字典的函数:
def add_demon(ctx, arg_name, arg_placement, arg_owner, arg_verifier, arg_difficulty, arg_level_id):
global DEMONS
DEMONS[arg_name] = {'placement':arg_placement,
'owner':arg_owner,
'verifier':arg_verifier,
'difficulty':arg_difficulty,
'level_id':arg_level_id}
如您所见,添加到DEMONS 的每个字典都是相同的类型,具有相同的键等...但值不同。
我希望每次调用此函数时,“DEMONS”字典中的字典都会自行排序。喜欢:
函数调用前:
{
'TEST_DEMON_2':
{'placement': '2',
'owner': 'Owner2',
'verifier': 'Verifier2',
'difficulty': 'Medium',
'level_id': '2'},
'TEST_DEMON_4':
{'placement': '4',
'owner': 'Owner4',
'verifier': 'Verifier4',
'difficulty': 'Medium',
'level_id': '4'},
'TEST_DEMON_3':
{'placement': '3',
'owner': 'Owner3',
'verifier': 'Verifier3',
'difficulty': 'Medium',
'level_id': '3'},
'TEST_DEMON_1':
{'placement': '1',
'owner': 'Owner1',
'verifier': 'Verifier1',
'difficulty': 'Easy',
'level_id': '1'}
}
函数调用后
{
'TEST_DEMON_1':
{'placement': '1',
'owner': 'Owner1',
'verifier': 'Verifier1',
'difficulty': 'Easy',
'level_id': '1'},
'TEST_DEMON_2':
{'placement': '2',
'owner': 'Owner2',
'verifier': 'Verifier2',
'difficulty': 'Medium',
'level_id': '2'},
'TEST_DEMON_3':
{'placement': '3',
'owner': 'Owner3',
'verifier': 'Verifier3',
'difficulty': 'Medium',
'level_id': '3'},
'TEST_DEMON_4':
{'placement': '4',
'owner': 'Owner4',
'verifier': 'Verifier4',
'difficulty': 'Medium',
'level_id': '4'}
}
我希望该函数根据每个字典的“放置”属性将每个字典从 1 排序到“无穷大”。所以每次我调用函数时,“DEMONS”中的第一个对象的位置属性设置为1,“DEMONS”中的第二个对象的位置属性设置为2,等等......
我不知道这是否可能,但如果它真的对我有帮助。
谢谢
(如果你需要我解释更多,问我:D)
【问题讨论】:
-
你知道python dict 没有排序吗?在集合中有一个特殊的类型叫做
OrderedDict -
@Steven:但由于 python 3.7 不是
dict和OrderedDict几乎相同的东西? -
这能回答你的问题吗? How do I sort a dictionary by value?
标签: python python-3.x sorting dictionary