我希望仅从此JSON API响应中提取catergory ID。
我目前有以下代码,其中dictstr
是返回的JSON
print(dictstr['Store']['CustomCategories']['CustomCategory'][0:-1])
这打印出以下JSON:
{
'CategoryID':'20004239012',
'Name':'Home Decor',
'Order':'1',
'ChildCategory':{
'CategoryID':'20215926012',
'Name':'Furniture',
'Order':'1'
}
},
{
'CategoryID':'20004240012',
'Name':'Christmas Decorations',
'Order':'2'
},
我需要的输出只有CatergoryID
和Name
键/值,如下所示:
['1', 'Other', '20004239012', 'Home Decor', '20215926012', 'Furniture',
'20004240012', 'Christmas Decorations', '20270732012', 'Candle stands',
'20270902012', 'Fireplace tools']
答案 0 :(得分:1)
假设你只需要深入一级,你可以这样做:
cids = [x for x in sum(
[(d.get('CategoryID'), d.get('ChildCategory', {}).get('CategoryID'))
for d in data], ()) if x]
通过迭代列表,您可以提取字段的元组(d.get(...)
),然后使用sum()
组合元组,最后删除任何None
(缺少)元素
data = [{
'CategoryID': '20004239012',
'Name': 'Home Decor',
'Order': '1',
'ChildCategory': {
'CategoryID': '20215926012',
'Name': 'Furniture',
'Order': '1'
}
},
{
'CategoryID': '20004240012',
'Name': 'Christmas Decorations',
'Order': '2'
},
]
cids = [x for x in sum(
[(d.get('CategoryID'), d.get('ChildCategory', {}).get('CategoryID'))
for d in data], ()) if x]
print(cids)
['20004239012', '20215926012', '20004240012']