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

如何匹配字典id与列表数据并生成两种指定格式输出?

处理字典与列表的ID匹配需求

原始数据

mydict = {
    'some-id-string1': {'name': 'Saeed1', 'phone': '+989307333730', 'id': 'abc'},
    'some-id-string2': {'name': 'Saeed2', 'phone': '+989307333731', 'id': 'def'},
    'some-id-string3': {'name': 'Saeed3', 'phone': '+989307333732', 'id': 'ghi'},
    'some-id-string4': {'name': 'Saeed3', 'phone': '+989307333733', 'id': 'jkl'},
    'some-id-string5': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc'},
    'some-id-string6': {'name': 'Saeed3', 'phone': '+989307333730', 'id': 'abc'},
    'some-id-string7': {'name': 'Saeed3', 'phone': '+989307333731', 'id': 'def'},
}
mylist = [
    {'id': 'abc', 'name': 'some_name1'},
    {'id': 'def', 'name': 'some_name2'},
    {'id': 'ghi', 'name': 'some_name3'},
]

解决方案

先将mylist转换为以id为键的映射字典,实现O(1)时间复杂度的快速查找,解决重复ID和遍历效率问题:

# 构建id到name的映射字典
id_to_name = {item['id']: item['name'] for item in mylist}

1. 生成完整字典newmydict1(不匹配元素的id_name设为NOT_FOUND)

遍历mydict的每个元素,复制原数据并添加id_name字段:

newmydict1 = {}
for outer_key, inner_data in mydict.items():
    # 复制原内部字典,避免修改原始数据
    updated_data = inner_data.copy()
    # 查找对应name,找不到则赋值为NOT_FOUND
    updated_data['id_name'] = id_to_name.get(inner_data['id'], 'NOT_FOUND')
    newmydict1[outer_key] = updated_data

2. 拆分匹配与不匹配元素为newmydict2和newmydict3

遍历过程中根据id是否存在于映射字典,将元素分别存入两个新字典:

newmydict2 = {}  # 存储匹配id的元素(带id_name)
newmydict3 = {}  # 存储不匹配id的元素(带NOT_FOUND标记)

for outer_key, inner_data in mydict.items():
    if inner_data['id'] in id_to_name:
        # 匹配的元素,添加id_name后存入newmydict2
        matched_data = inner_data.copy()
        matched_data['id_name'] = id_to_name[inner_data['id']]
        newmydict2[outer_key] = matched_data
    else:
        # 不匹配的元素,添加NOT_FOUND标记后存入newmydict3
        unmatched_data = inner_data.copy()
        unmatched_data['id_name'] = 'NOT_FOUND'
        newmydict3[outer_key] = unmatched_data

说明

  • 用字典映射替代列表遍历查找,解决了原列表推导式效率低、重复ID处理繁琐的问题。
  • 处理时复制原内部字典,避免修改原始数据的结构和内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:40:10