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

如何在Python中基于邮箱与resultRole对字典列表去重?

解决方案

可以通过一个临时字典按邮箱分组,优先保留resultRole为multiplex的条目,最终提取字典值即可:

docResults = [
    {'emailAddress':'user1@test.com','role':'writer','displayName':'USER1','type':'user','resultRole':'writer'},
    {'emailAddress':'user2@test.com','role':'owner','displayName':'USER2','type':'user','resultRole':'owner'},
    {'emailAddress':'user1@test.com','role':'writer','displayName':'USER1','type':'user','resultRole':'multiplex'},
    {'emailAddress':'user2@test.com','role':'owner','displayName':'USER2','type':'user','resultRole':'owner'},
    {'emailAddress':'user3@test.com','role':'commenter','displayName':'USER3','type':'user','resultRole':'multiplex'}
]

email_group = {}
for item in docResults:
    email = item['emailAddress']
    # 邮箱未记录,或当前条目是multiplex时更新记录
    if email not in email_group or item['resultRole'] == 'multiplex':
        email_group[email] = item

# 转换为目标列表
permissionsUsers_list = list(email_group.values())
print(permissionsUsers_list)

逻辑说明

  1. 遍历原列表,用emailAddress作为键,将条目存入email_group字典
  2. 处理每个条目时:
    • 若邮箱未在字典中,直接添加
    • 若邮箱已存在,检查当前条目是否为multiplex,若是则替换字典中原有条目(确保multiplex条目优先级最高)
  3. 最后将字典的所有值转为列表,即为符合要求的去重结果

如果需要保留同一邮箱第一个非multiplex条目(而非最后一个),可以调整判断条件为:

if email not in email_group or (email_group[email]['resultRole'] != 'multiplex' and item['resultRole'] == 'multiplex'):

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 16:47:50