在Python中,我的JSON格式如下:
lists = [
{
"id": 1,
"data": {
"id": "1",
"title": "Title1",
"list_category": "green",
"list_group": ["foo", "bar"],
"tag_Number": ["One","Three","Four","Seven"],
"tag_ABCD": ["B", "C", "D", "E"]
}
},
{
"id": 2,
"data": {
"id": "32",
"title": "Title32",
"list_category": "blue",
"list_group": ["foo2", "bar2"],
"tag_Number": ["One","Three","Four","Seven"],
"tag_ABCD": ["B", "C", "D", "E"]
},
...
我想写不同的函数从这些列表中提取不同类型的数据。例如,为了提取标题和id,我编写了以下函数:
def getTitle():
index_list = []
index_dict = dict()
for x in checklists:
val = ast.literal_eval(x["data"])
Index = dict(id= x['id'], title = val["title"])
index_dict[x['id']]=Index
return index_dict
我的问题是,当我尝试提取其他值时,例如tag_ABCD
,我尝试用以下方式更改我的函数:
def getTag():
index_list = []
index_dict = dict()
for x in checklists:
val = ast.literal_eval(x["data"])
_val = ast.literal_eval(x["val"])
Index = dict(id= x['id'], tag = _val["tag_ABCD"])
index_dict[x['id']]=Index
return index_dict
但它不会返回正确的元素。你知道吗
另一个问题(附带问题……): 当我想在dict中添加第三个元素时,为什么不能返回数据?你知道吗
def getTitle():
index_list = []
index_dict = dict()
for x in checklists:
val = ast.literal_eval(x["data"])
Index = dict(id= x['id'], title = val["title"], list_category = val["list_category"])
index_dict[x['id']]=Index
return index_dict
对于我的每一个变量,我都会得到相同的错误:
KeyError: 'list_category'
一个巧妙的方法来写你需要的函数将与列表理解和听写理解。请参见此处了解它们的工作原理:https://www.smallsurething.com/list-dict-and-set-comprehensions-by-example/
代码可以如下所示:
至于你在列表类别上的错误,我敢打赌你列表中的一个dict没有那个键。要查看发生了什么,请使用try except并在出现键错误时打印val。你知道吗
相关问题 更多 >
编程相关推荐