Python 如何从以前转储过的json文件中找到值?
我可能问得不对,因为我对json还很陌生。我有以下代码:Python 如何从以前转储过的json文件中找到值?,python,json,Python,Json,我可能问得不对,因为我对json还很陌生。我有以下代码: data = { "temp1": [ {"temp2": "!"}, {"temp3": "123"} ] } with open("./Config/test.json
data = {
"temp1": [
{"temp2": "!"},
{"temp3": "123"}
]
}
with open("./Config/test.json", "w") as f:
json.dump(data, f, indent=1)
with open("./Config/test.json", "r") as f:
data = json.load(f)
print(data["temp1"]["temp2"])
将有更多这样的字典具有其唯一id。该id现在标记为temp1。如何返回temp2或temp3值而不返回整个json?您可以使用循环在字典列表中查找
temp2
with open("./Config/test.json", "r") as f:
data = json.load(f)
for item in data["temp1"]:
if "temp2" in item:
print(item["temp2"])
如果你有一本字典,而不是一个有不同键的字典列表,那就容易多了
data = {
"temp1": {
"temp2": "!",
"temp3": "123"
}
}
您可以使用循环在字典列表中查找
temp2
with open("./Config/test.json", "r") as f:
data = json.load(f)
for item in data["temp1"]:
if "temp2" in item:
print(item["temp2"])
如果你有一本字典,而不是一个有不同键的字典列表,那就容易多了
data = {
"temp1": {
"temp2": "!",
"temp3": "123"
}
}
data[“temp1”][“temp2”]
不会返回“!”
,但错误命令引发异常:TypeError:列表索引必须是整数或片,而不是str
如果你问如何解决这个问题,我建议你把你想做的事情分成几部分:
print(data["temp1"])
这将打印一个列表。出现错误的原因是您试图使用字符串为该列表编制索引,但必须使用整数:
print(data["temp1"][0])
现在,这将打印出列表中的第一个dict,然后您可以使用字符串对其进行索引:
print(data["temp1"][0]["temp2"])
正如Barmar在他的回答中所说,您可能需要循环查看data[“temp1”]
给出的列表来完成您需要的操作。你的问题没有包括足够的细节,我无法推荐这是否是正确的方法
这里的关键是遵循数据的形状并对其进行适当的索引。如上所述,一次添加一个索引通常会有所帮助。你甚至应该考虑将每一部分分配给变量。
data[“temp1”][“temp2”]
不会返回“!”
,但错误命令引发异常:TypeError:列表索引必须是整数或片,而不是str
如果你问如何解决这个问题,我建议你把你想做的事情分成几部分:
print(data["temp1"])
这将打印一个列表。出现错误的原因是您试图使用字符串为该列表编制索引,但必须使用整数:
print(data["temp1"][0])
现在,这将打印出列表中的第一个dict,然后您可以使用字符串对其进行索引:
print(data["temp1"][0]["temp2"])
正如Barmar在他的回答中所说,您可能需要循环查看data[“temp1”]
给出的列表来完成您需要的操作。你的问题没有包括足够的细节,我无法推荐这是否是正确的方法
这里的关键是遵循数据的形状并对其进行适当的索引。如上所述,一次添加一个索引通常会有所帮助。你甚至应该考虑将每个部分分配给一个变量。< /P>在<代码>数据< /代码>中没有“<代码> <代码> >密钥。没有“代码> TEMP密钥,它是代码> TEMP1。<代码>数据[“Tun1”] [代码] >将返回<代码>“!”/>代码>代码>不要用引号引述。在读了你的问题好几遍之后,我不清楚你在问什么。当你说“return”时,你的意思是这段代码在函数中,你真的需要添加一个
return
语句吗?或者你是说别的什么?你说会有更多的字典“像这本”…像哪本?你是指数据指令吗?你能用一个更完整的例子来回答你的问题吗?在data
中没有guildid
键。没有temp
键,它是temp1
数据[“temp1”][“temp2”]
将返回!”
Guidid
是否应该是包含temp1
的变量?不要用引号引述。在读了你的问题好几遍之后,我不清楚你在问什么。当你说“return”时,你的意思是这段代码在函数中,你真的需要添加一个return
语句吗?或者你是说别的什么?你说会有更多的字典“像这本”…像哪本?你是指数据指令吗?你能用一个更完整的例子来回答你的问题吗?你想如何处理多个dict?是的,这很有效。这感觉像是一个基本的问题,所以我可能会在深入研究之前做更多的研究。谢谢您的帮助。@Mbuxiq如果您仍然需要帮助,请参阅我在您的问题下的较长评论,其中我要求对您的问题进行澄清。我认为我很好。我很抱歉,标题和问题本身并没有确切说明我想做什么。但正如我所说的,我对这个还是新手,json是我第一次使用某种形式的数据库,我大约5小时前就开始使用了。因此,我可能会阅读一些关于堆栈溢出的文档和/或评论,以便更好地理解json。@Mbuxiq问正确的问题本身就是一项技能。JSON本身并不复杂。它只是相互嵌套的字典和列表。你只需要在每次索引操作后跟踪你拥有的东西。是的,这很有效。这感觉像是一个基本的问题,所以我可能会在深入研究之前做更多的研究。谢谢您的帮助。@Mbuxiq如果您仍然需要帮助,请参阅我在您的问题下的较长评论,其中我要求对您的问题进行澄清。我认为我很好。我很抱歉,标题和问题本身并没有确切说明我想做什么。但正如我所说的,我对这个还是新手,json是我第一次使用某种形式的数据库,我大约5小时前就开始使用了。因此,我可能会阅读一些关于堆栈溢出的文档和/或评论,以便更好地理解json。@Mbuxiq问正确的问题本身就是一项技能。JSON本身并不复杂。它只是相互嵌套的字典和列表。您只需要跟踪在每次索引操作之后您拥有的内容。