Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从以前转储过的json文件中找到值?_Python_Json - Fatal编程技术网

Python 如何从以前转储过的json文件中找到值?

Python 如何从以前转储过的json文件中找到值?,python,json,Python,Json,我可能问得不对,因为我对json还很陌生。我有以下代码: data = { "temp1": [ {"temp2": "!"}, {"temp3": "123"} ] } with open("./Config/test.json

我可能问得不对,因为我对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本身并不复杂。它只是相互嵌套的字典和列表。您只需要跟踪在每次索引操作之后您拥有的内容。