You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现新增元素后按子字典placement值排序嵌套字典

该需求完全可以实现,Python 3.7及以上版本的原生字典默认保留插入顺序,只需在新增元素后按规则重排字典即可,修改后的代码如下:

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}
     # 按placement的数值升序重排字典
     DEMONS = dict(sorted(DEMONS.items(), key=lambda item: int(item[1]['placement'])))

补充说明

  • 排序逻辑中将placement字符串转为int类型比较,避免出现字符串排序时'10'排在'2'前面的问题
  • 如果使用Python 3.6及更早版本,原生字典不保证顺序,可改用collections.OrderedDict实现:
from collections import OrderedDict

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}
     # 重排后赋值为OrderedDict
     DEMONS = OrderedDict(sorted(DEMONS.items(), key=lambda item: int(item[1]['placement'])))
  • 若要避免非法的placement值导致报错,可在新增前增加校验逻辑,判断传入的arg_placement是否可以转为正整数即可。

内容的提问来源于stack exchange,提问作者Cold Fire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 17:12:02