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
相关产品推荐
相关产品推荐

