从多嵌套词典获取变量时遇到一些问题。
我正在尝试使用以下代码段获取CategoryParentID:
print dicstr['CategoryParentID']
而我的字典看起来像这样:
{
"CategoryCount": "12842",
"UpdateTime": "2018-04-10T02:31:49.000Z",
"Version": "1057",
"Ack": "Success",
"Timestamp": "2018-07-17T18:33:40.893Z",
"CategoryArray": {
"Category": [
{
"CategoryName": "Antiques",
"CategoryLevel": "1",
"AutoPayEnabled": "true",
"BestOfferEnabled": "true",
"CategoryParentID": "20081",
"CategoryID": "20081"
},
.
.
.
}
但是,我遇到此错误:
Traceback (most recent call last):
File "get_categories.py", line 25, in <module>
getUser()
File "get_categories.py", line 18, in getUser
print dictstr['CategoryParentID']
KeyError: 'CategoryParentID'
答案 0 :(得分:2)
您需要先遍历字典。 CategoryParentID
在列表中(因此为[0]
),列表为Category
的值,CategoryArray
的值为dicstr = {'CategoryCount': '12842',
'UpdateTime': '2018-04-10T02:31:49.000Z',
'Version': '1057',
'Ack': 'Success',
'Timestamp': '2018-07-17T18:33:40.893Z',
'CategoryArray': {'Category': [{'CategoryName': 'Antiques',
'CategoryLevel': '1',
'AutoPayEnabled': 'true',
'BestOfferEnabled': 'true',
'CategoryParentID': '20081',
'CategoryID': '20081'}]
}
}
dicstr['CategoryArray']['Category'][0]['CategoryParentID']
'20081'
void f() {
{
int x = 1
// do something with x
}
// x not visible here anymore
}
答案 1 :(得分:1)
您必须像这样获得它-
x['CategoryArray']['Category'][0]['CategoryParentID']
如果我们简化您发布的字典,我们会得到-
d = {'CategoryArray': {'Category': [{'CategoryParentID': '20081'}]}}
# "CategoryArray"
# "Category" child of CategoryArray
# Key "Category" contains a list [{'CategoryName': 'Antiques', 'CategoryParentID': '20081'...}]
# Get 0th element of key "Category" and get value of key ["CategoryParentID"]
我希望这是有道理的
答案 2 :(得分:1)
当您要求Python给您dicstr['CategoryParentID']
时,您要它做的就是为您提供与'CategoryParentID'
中的键dicstr
关联的值。
看看定义字典的方式。 dictstr
的键将是dictstr
下正好一层的所有键。这些是当您指定CategoryParentID
时Python试图寻找dictstr['CategoryParentID']
的关键。这些键是:
"CategoryCount"
"UpdateTime"
"Version"
"Ack"
"Timestamp"
"CategoryArray"
请注意,您要查找的密钥不存在。这是因为它在dictstr
中嵌套了多个级别。您需要保持“跳来跳去”这些键,直到获得CategoryParentID
键为止。试试:
dictstr['CategoryArray']['Category'][0]['CategoryParentID']
请注意其中的[0]
。与'Category'
键相关联的值是一个列表。该列表包含一个元素,即一本字典。为了找到拥有您实际想要的键的字典,您必须在包含字典的索引处索引到列表。由于只有一个元素,因此可以使用[0]
直接对其进行索引以获取字典,然后继续“跳动”键。