从多嵌套字典中捕获 python 个值
Capture python value from multi-nested dictionary
我在从多嵌套字典中获取变量时遇到一些问题。
我正在尝试使用以下代码段获取 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'
你需要先遍历字典。 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'
你必须得到它 -
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"]
我希望它有意义
当你要求 Python 给你 dicstr['CategoryParentID']
时,你要求它做的是给你与 [=12] 中的键 'CategoryParentID'
关联的值=].
看看你的字典是怎么定义的。 dictstr
的键将是 dictstr
下一层的所有键。当您指定 dictstr['CategoryParentID']
时,Python 正在查看这些键以尝试找到 CategoryParentID
。这些键是:
"CategoryCount"
"UpdateTime"
"Version"
"Ack"
"Timestamp"
"CategoryArray"
请注意,您要查找的密钥不存在。那是因为它在 dictstr
中嵌套了好几层。在找到 CategoryParentID
键之前,您需要保留 "hopping along" 这些键。尝试:
dictstr['CategoryArray']['Category'][0]['CategoryParentID']
请注意其中的 [0]
。与 'Category'
键关联的值是一个列表。该列表包含一个元素,即字典。为了找到包含您实际需要的键的字典,您必须在包含字典的索引处对列表进行索引。由于只有一个元素,直接使用 [0]
索引到它得到字典,然后继续 "hop along" 键。
我在从多嵌套字典中获取变量时遇到一些问题。
我正在尝试使用以下代码段获取 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'
你需要先遍历字典。 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'
你必须得到它 -
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"]
我希望它有意义
当你要求 Python 给你 dicstr['CategoryParentID']
时,你要求它做的是给你与 [=12] 中的键 'CategoryParentID'
关联的值=].
看看你的字典是怎么定义的。 dictstr
的键将是 dictstr
下一层的所有键。当您指定 dictstr['CategoryParentID']
时,Python 正在查看这些键以尝试找到 CategoryParentID
。这些键是:
"CategoryCount"
"UpdateTime"
"Version"
"Ack"
"Timestamp"
"CategoryArray"
请注意,您要查找的密钥不存在。那是因为它在 dictstr
中嵌套了好几层。在找到 CategoryParentID
键之前,您需要保留 "hopping along" 这些键。尝试:
dictstr['CategoryArray']['Category'][0]['CategoryParentID']
请注意其中的 [0]
。与 'Category'
键关联的值是一个列表。该列表包含一个元素,即字典。为了找到包含您实际需要的键的字典,您必须在包含字典的索引处对列表进行索引。由于只有一个元素,直接使用 [0]
索引到它得到字典,然后继续 "hop along" 键。