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

如何向嵌套字典结构的JSON中追加指定日志条目?

报错原因

触发need integer not str类型错误的核心是数据层级索引使用错误:你操作的最外层结构是Python列表,列表仅支持整数/切片索引,你大概率是直接对最外层列表传入字符串作为键查找值(例如直接写ct_logs["DigiCert"]),才触发的类型报错。

可行实现方案

你的数据层级非常清晰:

  • 最外层:列表,每个元素为证书运营商字典,固定包含name(运营商名称,字符串)、logs(该运营商下CT日志列表)两个键
  • 运营商字典下的logs字段:列表,每个元素为单条CT日志字典,固定包含description、log_id两个键

基础实现代码

先定义待补充的日志参数,假设你解析完成的CT日志数组变量名为ct_logs:

# 待补充的日志属性
log_id = "some_log_Id"
log_description = 'Digicert named log'
operator_name = 'DigiCert'

# 遍历匹配目标运营商分组
for operator in ct_logs:
    # 注意名称大小写要和现有数据完全匹配,现有数据中运营商名是"DigiCert"(C大写)
    if operator["name"] == operator_name:
        # 向对应分组的logs列表追加新日志条目
        operator["logs"].append({
            "description": log_description,
            "log_id": log_id
        })
        break

兼容版本(自动创建缺失分组)

如果后续数据变动导致DigiCert分组不存在,可以加判断自动新建分组,避免匹配失败:

target_group = None
# 查找目标分组
for operator in ct_logs:
    if operator["name"] == operator_name:
        target_group = operator
        break

# 未找到分组则新建
if not target_group:
    target_group = {
        "name": operator_name,
        "logs": []
    }
    ct_logs.append(target_group)

# 追加新日志
target_group["logs"].append({
    "description": log_description,
    "log_id": log_id
})
常见错误写法避坑

以下是触发该类报错的典型错误写法,注意规避:

# 错误1:直接对最外层列表用字符串键索引
ct_logs["DigiCert"]["logs"].append(...)  # 最外层是列表,不支持字符串作为索引

# 错误2:层级取值错误,把logs列表当成字典操作
for operator in ct_logs:
    operator["logs"]["description"] = log_description  # logs是列表,不能直接用字符串键取description

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:09:15