我无法在我的python dictionairy中获取从json文件创建的值,以便打印。这是我的JSON:
{
"Questions": [
{
"Q1":"What is capital of egypt?",
"T":"London",
"2":"France",
"3":"Egypt"
},
{
"Q2":"What is capital of USA?",
"T":"London",
"2":"France",
"3":"Egypt"
}
]
}
这是我的python:
import json
with open("questions.json") as f:
data = json.load(f)
print(data["Questions"]["Q1"])
返回错误:list indices必须是整数或切片,而不是str
我做错了什么?我已经检查了打印的语法,这一切似乎都是正确的。
答案 0 :(得分:3)
一个好的策略是首先删除代码直到它工作。例如,而不是
print(data["Questions"]["Q1"])`
你应该试试
print(data["Questions"])`
此输出是
[{'Q1': 'What is capital of egypt?', 'T': 'London', '2': 'France', '3': 'Egypt'},
{'Q2': 'What is capital of USA?', 'T': 'London', '2': 'France', '3': 'Egypt'}]
从那里,您可以尝试像在问题中那样进行索引:
[{'Q1': 'What is capital of egypt?', 'T': 'London', '2': 'France', '3': 'Egypt'},
{'Q2': 'What is capital of USA?', 'T': 'London', '2': 'France', '3': 'Egypt'}]['Q1']
除非没有意义,因为你试图索引列表,列表中的索引是整数,而不是字符串。
因此,为了获得您期望的结果,您应该使用data["Questions"][0]
来索引第一个问题。
在我看来,更好的解决方案是将JSON的结构更改为更有意义的内容。我就是这样做的:
{
"Questions": {
"Q1": {
"Q":"What is capital of egypt?",
"T":"London",
"2":"France",
"3":"Egypt"
},
"Q2" : {
"Q":"What is capital of USA?",
"T":"London",
"2":"France",
"3":"Egypt"
}
}
}
现在,您可以像预期一样使用Q1
或Q2
执行查找。
答案 1 :(得分:1)
Questions
的值是一个列表。与错误一样,索引必须是整数。
第一个问题是data["Questions"][0]
,第二个问题是data["Questions"][1]
,依此类推。
如果你想要" Q1"的价值对于第一个问题,您需要使用data["Questions"][0]["Q1"]
答案 2 :(得分:0)
试试这段代码:
import json
with open("questions.json") as f:
data = json.load(f)
print(data["Questions"][0]["Q1"], data["Questions"][1]["Q1"])