Python中的KeyError:0
我试图获取在这个JSON中返回的第一个对象的Python中的KeyError:0,python,json,Python,Json,我试图获取在这个JSON中返回的第一个对象的方向和站的值,但是我得到了以下错误 关键错误:0 这是我的密码: print(json.dumps(savedrequest, indent=4)) savedstation = savedrequest[0]['station'] saveddirection = savedrequest[0]['direction'] 这就是它在印刷品中返回的内容: { "-bas": { "email_address": "dd3@
方向
和站
的值,但是我得到了以下错误
关键错误:0
这是我的密码:
print(json.dumps(savedrequest, indent=4))
savedstation = savedrequest[0]['station']
saveddirection = savedrequest[0]['direction']
这就是它在印刷品中返回的内容:
{
"-bas": {
"email_address": "dd3@gmail.com",
"direction": "Southbound",
"station": "place-har"
},
"-bus": {
"email_address": "dd4@gmail.com",
"direction": "Southbound",
"station": "place-su"
}
}
我不知道返回的
-bas
或-bus
将是什么,我需要选择数组中的第一个对象。您的JSON被解码为一个“对象”(在python中称为dict
),它不是数组。因此,它没有特定的“顺序”。您认为的“第一个”元素实际上可能不是这样存储的。不能保证每次都是同一个对象
但是,您可以尝试使用json.loads的object\u hook
参数将这些dict
s转换为orderedict
s。一个OrderedDict
就像一个dict
,但它记住了插入其中的顺序元素
import json
from collections import OrderedDict
savedrequest = json.loads(data, object_pairs_hook=OrderedDict)
# Then you can get the "first" value as `OrderedDict` remembers order
#firstKey = next(iter(savedrequest))
first = next(iter(savedrequest.values()))
savedstation = first['station']
saveddirection = first['direction']
(这个答案要感谢and)您的JSON被解码成一个“对象”(在python中称为dict
),它不是数组。因此,它没有特定的“顺序”。您认为的“第一个”元素实际上可能不是这样存储的。不能保证每次都是同一个对象
但是,您可以尝试使用json.load
(和json.load
)的object\u pairs\u hook
参数将这些dict
转换为orderedict
s。一个OrderedDict
就像一个dict
,但它记住了插入其中的顺序元素
import json
from collections import OrderedDict
savedrequest = json.loads(data, object_pairs_hook=OrderedDict)
# Then you can get the "first" value as `OrderedDict` remembers order
#firstKey = next(iter(savedrequest))
first = next(iter(savedrequest.values()))
savedstation = first['station']
saveddirection = first['direction']
(这个答案要感谢and)savedrequest
不是数组,它没有键0
。您需要使用'-bas'
(或'-bus'
)。在该数组中,是否有方法选择第一个对象并从这些方向
和站
键获取值?为什么要访问键0
?没有数组。您有一个JSON对象,它被转换为python dict。python中的字典本质上是无序的,因此没有“first”元素的概念。它不是数组,而是字典。字典没有排序,因此您无法使用[0]、[1]等访问它们。您只能通过字典中的键访问它们。没有其他方法。savedrequest
不是数组,它没有键0
。您需要使用'-bas'
(或'-bus'
)。在该数组中,是否有方法选择第一个对象并从这些方向
和站
键获取值?为什么要访问键0
?没有数组。您有一个JSON对象,它被转换为python dict。python中的字典本质上是无序的,因此没有“first”元素的概念。它不是数组,而是字典。字典没有排序,因此您无法使用[0]、[1]等访问它们。您只能通过字典中的键访问它们。没有别的办法了。