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

Python中移除字典键末尾4字符并处理重复键值问题

字典键处理与重复键值合并问题

问题核心解答

首先明确:Python字典的键是唯一不可重复的,你写的那种包含多个'F000000EU6'键的字典根本不存在。如果直接循环修改原字典,后面的键值对会直接覆盖前面的,最终只会保留最后一次赋值的结果(比如按原字典顺序处理,最后会保留'23TEST3')。而你说的自动合并成一个列表的情况,也不会自动发生,必须手动编写逻辑实现值的合并。

正确实现代码

要实现长键截断后,相同键对应值合并为列表的效果,可以创建新字典来处理:

security_dict = {'F000000EU6XNAS': ['23TEST1', 'ETEST'], 'F000000EU6XNGS': '23TEST2', 'F000000EU6': '23TEST3'}

new_dict = {}
for key, value in security_dict.items():
    # 处理键:长度为14则截断最后4位
    new_key = key[:-4] if len(key) == 14 else key
    
    # 处理值:合并到对应键的列表中
    if new_key in new_dict:
        # 统一将值转为列表格式合并
        existing = new_dict[new_key]
        if not isinstance(existing, list):
            existing = [existing]
        if isinstance(value, list):
            existing.extend(value)
        else:
            existing.append(value)
        new_dict[new_key] = existing
    else:
        # 新键初始化:单个值转列表,列表直接保留
        new_dict[new_key] = value.copy() if isinstance(value, list) else [value]

print(new_dict)

运行后输出正是你预期的合并结果:

{'F000000EU6': ['23TEST1', 'ETEST', '23TEST2', '23TEST3']}

补充说明

  • 上述代码保证所有值都以列表格式存储,后续处理更统一;如果需要仅在多值时用列表,可调整逻辑。
  • 循环处理的时间复杂度为O(n)(n为原字典键值对数量),字典查找是O(1)操作,应对大数据量也足够高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 21:55:12