python - TypeError('列表索引必须是整数,而不是str',)在Python中使用get()方法
问题描述
我正在尝试使用以下代码将 JSON 文件转换为 CSV。大多数情况下,PARENT_ID 和 PARENT_TYPE 字段可以为 NULL。如果我使用 result["parent"]["id"] 它会返回 KeyError。这就是为什么我想使用 get() 来返回它们持有的任何值。但是我收到了这些字段的 TypeError('list indices must be integers, not str',)。任何人都可以提出任何解决方法吗?提前致谢!
“父”是“结果”字典中的一个列表。
my_dict_list =[]
try:
for f in os.listdir(file_dir):
if f.endswith('.json') and f.startswith('folders_'):
file_path = os.path.join(file_dir, f)
data = open(file_path, 'r')
for line in data:
my_dict = {}
parsed_data = json.loads(line)
my_dict["REQUEST_ID"] = parsed_data["requestId"]
my_dict["SUCCESS"] = parsed_data["success"]
for result in parsed_data["result"]:
my_dict["NAME"] = result["name"]
my_dict["DESCRIPTION"] = result["description"]
my_dict["FOLDER_ID"] = result["folderId"]["id"]
my_dict["FOLDER_ID_TYPE"] = result["folderId"]["type"]
my_dict["FOLDER_TYPE"] = result["folderType"]
my_dict["PARENT_ID"] = result.get(["parent"]["id"])
my_dict["PARENT_TYPE"] = result.get(["parent"]["type"])
解决方案
当前,您正在尝试从以下行中带有字符串“parent”的列表中访问成员“id”:
my_dict["PARENT_ID"] = result.get(["parent"]["id"])
您必须检查结果字典是否包含键“父”。您的结果字典的get 方法可用于此目的。
如果 dict 不包含键“parent” ,则返回None 。否则使用get方法并尝试获取父级的id
你的代码必须是
my_dict["PARENT_ID"] = result["parent"].get("id") if result.get("parent") else None
推荐阅读
- microsoft-graph-api - OneDrive 中的节流
- c# - 使用 SqlDatRecord 结果列表插入行 数据库中的外键错误
- gcc - 未定义对 `__isoc99_sscanf@GLIBC_2.7' 的引用
- java - 如何将主题的所有记录存储在单个文件中。?
- ssl - OCSP 查询没有颁发者证书的中间证书
- reporting-services - 是否可以限制 RunningValue 回顾一定数量的行?
- angular - Angular i18m xliffmerge 覆盖翻译
- php - 处理整数的 Explode 的替代方法 - 不能使用 str_split()
- javascript - JS:循环强制升序排序,如何保持定义的顺序?
- docker - 在 docker swarm 服务更新后替换对等容器