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

如何从嵌套元组列表中配对提取元组第二个元素构建字典

解决方法

你的需求是把相邻的name和value元组配对,只提取它们的第二个元素组成字典,其实只需要两步:先拆分出所有的name值和value值,再配对成字典。

分步实现

首先看你的原始数据:

new = [[('name', 'n1')], [('value', 'v1')], [('name', 'n2')], [('value', 'v2')], [('name', 'n3')], [('value', 'v3')]]
  1. 提取所有name的第二个元素:用切片new[::2]获取所有包含name的子列表,再通过列表推导式取出元组的第二个值:

    names = [item[0][1] for item in new[::2]]
    # 结果:['n1', 'n2', 'n3']
    
  2. 提取所有value的第二个元素:同理,用切片new[1::2]获取所有包含value的子列表,再提取对应值:

    values = [item[0][1] for item in new[1::2]]
    # 结果:['v1', 'v2', 'v3']
    
  3. 配对成字典:用dict(zip(names, values))把两个列表一一对应转成字典:

    res = dict(zip(names, values))
    # 结果:{'n1': 'v1', 'n2': 'v2', 'n3': 'v3'}
    

简洁的一行写法

如果想更紧凑,也可以把上面的步骤合并成一行:

res = dict(zip([item[0][1] for item in new[::2]], [item[0][1] for item in new[1::2]]))

更直观的循环写法

如果你觉得列表推导式有点绕,用循环实现会更易懂:

res = {}
# 步长设为2,每次处理一对name和value
for i in range(0, len(new), 2):
    # 取出name元组的第二个元素
    name = new[i][0][1]
    # 取出对应value元组的第二个元素
    value = new[i+1][0][1]
    res[name] = value

运行上面的任意一种写法,都能得到你想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 10:52:27