首页 > 解决方案 > 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"])

标签: pythonjsonpython-2.7

解决方案


当前,您正在尝试从以下行中带有字符串“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

推荐阅读