从多嵌套字典中捕获 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" 键。