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

Python中字典键已存在时如何为其添加多个值?

当然可以呀!这是处理字典中重复键值聚合的常见场景,我给你两种实用的实现方式:

方法一:基础分支判断(清晰易懂)

这种方式逻辑直白,适合刚接触字典操作的场景:

contacts = {}
for execution_step in execution_steps["steps"]:
    main_execution_context = get_execution_context(execution_step["url"])
    contact_phone = main_execution_context["contact"]
    current_id = main_execution_context["id"]
    
    # 检查当前电话号码是否已经在字典里
    if contact_phone in contacts:
        # 如果存在,先确保对应的值是列表(避免第一次是单个值导致后续追加报错)
        if not isinstance(contacts[contact_phone], list):
            contacts[contact_phone] = [contacts[contact_phone]]
        # 把新ID追加到列表里
        contacts[contact_phone].append(current_id)
    else:
        # 如果不存在,直接赋值(要是你希望所有值一开始都是列表,这里也可以写成 [current_id])
        contacts[contact_phone] = current_id

逻辑说明:

  • 先判断电话号码是否已存在于字典中
  • 存在的话,先把可能的单个值转成列表,再追加新ID
  • 不存在的话,直接存入初始值(单个ID或单元素列表都可以,看你后续的使用需求)

方法二:用dict.setdefault()简化代码(更优雅)

Python字典的setdefault()方法天生适合这种场景,能帮你省去分支判断,代码更简洁:

contacts = {}
for execution_step in execution_steps["steps"]:
    main_execution_context = get_execution_context(execution_step["url"])
    contact_phone = main_execution_context["contact"]
    current_id = main_execution_context["id"]
    
    # setdefault会自动处理:键不存在就创建空列表,存在就返回已有值,然后直接追加ID
    contacts.setdefault(contact_phone, []).append(current_id)

逻辑说明:

  • setdefault(contact_phone, []):如果contact_phone不在字典里,就把它的默认值设为空列表并返回;如果已经存在,就返回对应的现有值(列表)
  • 直接调用append(current_id),不管是新创建的空列表还是已有的列表,都能直接追加ID
  • 这种方式下,所有电话号码对应的ID都是列表,哪怕只有一个ID,也会是[id]的形式,后续统一处理起来更方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 09:54:08