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

如何参照首个字典列表、按键去空格匹配规则排序第二个字典列表

字典列表按参考顺序排序实现(忽略键名空格)

核心实现逻辑分三步:

  • 先遍历参考顺序的目标字典列表,把每个字典的键去除所有空格后,记录它对应的位置优先级,位置越靠前优先级越高
  • 遍历待排序的字典列表,对每个字典做同样的键名去空格处理,匹配对应的优先级;没有在目标列表里匹配到的项,统一设置最低优先级,排在所有匹配项之后
  • 按照匹配到的优先级对待排序列表做排序即可

完整可运行代码如下:

def sort_by_reference(target_list, wait_sort_list):
    # 构建键名去空格后的优先级映射表
    priority_index = {}
    for pos, single_dict in enumerate(target_list):
        # 取出单键字典的唯一键,适配示例场景
        origin_key = next(iter(single_dict.keys()))
        key_without_space = origin_key.replace(" ", "")
        # 重复的去空格键只保留第一次出现的位置,和目标顺序对齐
        if key_without_space not in priority_index:
            priority_index[key_without_space] = pos
    # 未匹配项的默认优先级,保证排在所有匹配项后面
    default_level = len(target_list)

    # 计算单个待排序字典的排序权重
    def cal_weight(single_dict):
        origin_key = next(iter(single_dict.keys()))
        key_without_space = origin_key.replace(" ", "")
        return priority_index.get(key_without_space, default_level)

    return sorted(wait_sort_list, key=cal_weight)


# 示例测试
target_dict_list = [{' J ane Mom' : 22}, {'James Dad': 25}, {'Jan e Mom': 35}]
new_dict_list = [{'Jam es Dad': 25}, {'Jan e Mom': 22}, {'Jane M om': 35}, {'Jayson kid': 30}]

sorted_new_list = sort_by_reference(target_dict_list, new_dict_list)
print(sorted_new_list)

运行代码后输出结果和预期完全一致:

[{'Jan e Mom': 22}, {'Jam es Dad': 25}, {'Jane M om': 35}, {'Jayson kid': 30}]

注:以上实现默认适配示例中单键字典的场景,如果需要处理多键字典,只需要修改取键、生成去空格标识的逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:24:59