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

如何在Python中将Zapier输出的列表列表转为键值对集合?

问题

我在用Zapier工具基于每小时刷新的Google Sheet做工作流自动化,Zap输出的原始行数据格式如下:

list = [["header_1", "header_2", "header_3"], ["uuid_1", "first_timestamp_1", "second_timestamp_1"], ["uuid_2", "first_timestamp_2", "second_timestamp_2"], ["uuid_3", "first_timestamp_3", "second_timestamp_3"]]

需要把这些数据转成JSON对象集合,以第一个列表元素为键,其余元素为对应值,理想输出是:

[
  {
    "header_1":"uuid_1",
    "header_2":"first_timestamp_1",
    "header_3":"second_timestamp_1"
  },
  {
    "header_1":"uuid_2",
    "header_2":"first_timestamp_2",
    "header_3":"second_timestamp_2"
  },
  {
    "header_1":"uuid_3",
    "header_2":"first_timestamp_3",
    "header_3":"second_timestamp_3"
  }
]

我写了下面的Python代码,但执行时报错AttributeError: 'str' object has no attribute 'append',不确定思路对不对,求解决建议:

list = [["header_1", "header_2", "header_3"], ["uuid_1", "first_timestamp_1", "second_timestamp_1"], ["uuid_2", "first_timestamp_2", "second_timestamp_2"], ["uuid_3", "first_timestamp_3", "second_timestamp_3"]]

row_count = len(list)

if row_count == 1:
    print(null)
else:
    header = list[0]
    output = []
    for element in list:
        output.append(dict())
        for i in element:
            j = 0
            while j < len(header):
                key = header[j]
                value = i
                output = """+key+""":"""+value+"""
                j = j+1

问题分析与修复方案

错误原因

  • 变量类型被覆盖:初始output是列表,但后续代码把它赋值成了字符串,再调用output.append()就会触发类型错误。
  • 循环逻辑错误:外层循环遍历了包括表头在内的所有行,应该只处理表头之后的数据;嵌套循环的结构完全混乱,没有正确将键值对关联到对应的字典中。
  • 语法错误:Python里空值是None不是null;手动拼接键值对的写法不符合Python语法规范。

修复后的代码

import json

# 避免用list作为变量名,防止覆盖内置类型
data = [["header_1", "header_2", "header_3"], ["uuid_1", "first_timestamp_1", "second_timestamp_1"], ["uuid_2", "first_timestamp_2", "second_timestamp_2"], ["uuid_3", "first_timestamp_3", "second_timestamp_3"]]

row_count = len(data)

if row_count == 1:
    print(None)
else:
    headers = data[0]
    output = []
    # 只遍历表头之后的行数据
    for row in data[1:]:
        # 用zip快速配对表头与行数据,生成字典
        row_dict = dict(zip(headers, row))
        output.append(row_dict)
    
    # 输出格式化后的JSON字符串
    print(json.dumps(output, indent=2))

关键说明

  • 避免内置类型冲突:不要用list作为变量名,改用data这类通用名称,防止覆盖Python内置的list类型。
  • 高效生成字典:zip(headers, row)可以将表头和对应行的元素一一配对,再通过dict()直接生成目标字典,比嵌套循环简洁高效。
  • JSON格式化输出:导入json模块后,json.dumps()能直接把列表转成符合要求的格式化JSON字符串,无需手动拼接。
  • 边界处理:当只有表头行时,输出Python的空值None,符合需求逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:45:34