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

如何在Python中将字典列表转换为roll_id与id反向映射的字典列表?

解决方法

可以通过以下Python代码实现需求:

original_data = [
    {"id": 1, "roll_id": ["101", "201"]},
    {"id": 2, "roll_id": ["301", "201"]},
    {"id": 3, "roll_id": ["424"]}
]

# 初始化中间字典,用于按roll_id聚合id
roll_id_map = {}

for item in original_data:
    current_id = str(item["id"])  # 转为字符串匹配示例格式
    for roll_id in item["roll_id"]:
        # 如果roll_id不在字典中,先创建空列表
        if roll_id not in roll_id_map:
            roll_id_map[roll_id] = []
        # 将id添加到对应roll_id的列表中
        roll_id_map[roll_id].append(current_id)

# 将中间字典转换为目标格式的列表
result = [{"roll_id": rid, "id": ids} for rid, ids in roll_id_map.items()]

print(result)

代码说明:

  1. 初始化中间字典:roll_id_map用来临时存储每个roll_id对应的所有id,方便后续聚合。
  2. 遍历原数据:逐个处理原列表中的每个字典,把id转为字符串(和示例输出格式一致),再遍历该字典下的所有roll_id。
  3. 聚合id:如果当前roll_id还没在字典里,就创建一个空列表;然后把当前id添加到这个roll_id对应的列表中。
  4. 转换格式:用列表推导式把中间字典转换成要求的列表格式,每个元素是包含roll_id和id列表的字典。

运行这段代码后,输出结果就是你需要的格式:

[
    {'roll_id': '101', 'id': ['1']},
    {'roll_id': '201', 'id': ['1', '2']},
    {'roll_id': '301', 'id': ['2']},
    {'roll_id': '424', 'id': ['3']}
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:10:28