[英]How to return a list as a dictionary, with the placement of the lists' variables as the dictionary's values?
[英]Return values in dictionary of lists
我正在使用 Python 3.6
我有一个字典列表(如下),并希望为我的数据中的每条记录返回以下值: id
、 name
、 color
。 我似乎无法弄清楚如何遍历数据集中的所有“页面”以返回所有值。 我已经for
下面包含的for
循环,但它只返回第一页的数据,而没有返回其他页面的数据。 我正在寻找的最终状态将返回我在for
循环中的结构中的数据,但对于所有页面。
我的数据和 for 循环:
mydict = [
{
"page": 1,
"data":[
{
"id": 11111,
"name": "smith",
"color": "orange",
"subsidiary": "no"
},
{
"id": 22222,
"name": "smith",
"color": "orange",
"subsidiary": "yes",
"subsidiaries": [
{
"id": 33333,
"name": "alpha",
"color": "blue"
},
{
"id": 44444,
"name": "alpha",
"color": "blue"
}
],
"last_updated": 123456789
}
]
},
{
"page": 2,
"data":[
{
"id": 55555,
"name": "smith",
"color": "orange",
"subsidiary": "no"
},
{
"id": 66666,
"name": "smith",
"color": "orange",
"subsidiary": "yes",
"subsidiaries": [
{
"id": 77777,
"name": "alpha",
"color": "blue"
},
{
"id": 88888,
"name": "alpha",
"color": "blue"
}
],
"last_updated": 987654321
}
]
}
]
for i in mydict[0]['data']:
print ({"cust_id": i['id'], "cust_name": i['name'], "fabric_color": i['color']})
返回:
{'cust_id': 11111, 'cust_name': 'smith', 'fabric_color': 'orange'}
{'cust_id': 22222, 'cust_name': 'smith', 'fabric_color': 'orange'}
你有一个字典列表,而不是一个列表字典。 所以你可以使用嵌套的for
循环:
for d in mydict:
for i in d['data']:
print({"cust_id": i['id'], "cust_name": i['name'], "fabric_color": i['color']})
要将结果存储在字典列表中而不只是打印,您可以附加到列表:
L = []
for d in mydict:
for i in d['data']:
L.append({"cust_id": i['id'], "cust_name": i['name'], "fabric_color": i['color']})
更有效地,您可以使用等效的列表推导式:
L = [{"cust_id": i['id'], "cust_name": i['name'], "fabric_color": i['color']} \
for d in mydict for i in d['data']]
print(L)
[{'cust_id': 11111, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 22222, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 55555, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 66666, 'cust_name': 'smith', 'fabric_color': 'orange'}]
这是一个捕获附属数据(如果存在)的示例:
L = []
for d in mydict:
for i in d['data']:
L.append({"cust_id": i['id'], "cust_name": i['name'], "fabric_color": i['color']})
if 'subsidiaries' in i:
for s in i['subsidiaries']:
L.append({"cust_id": s['id'], "cust_name": s['name'], "fabric_color": s['color']})
print(L)
[{'cust_id': 11111, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 22222, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 33333, 'cust_name': 'alpha', 'fabric_color': 'blue'},
{'cust_id': 44444, 'cust_name': 'alpha', 'fabric_color': 'blue'},
{'cust_id': 55555, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 66666, 'cust_name': 'smith', 'fabric_color': 'orange'},
{'cust_id': 77777, 'cust_name': 'alpha', 'fabric_color': 'blue'},
{'cust_id': 88888, 'cust_name': 'alpha', 'fabric_color': 'blue'}]
做这样的事情。
mydict = []
for page in mydict:
print(page['page'])
for data in page['data']:
print ({"cust_id": data['id'], "cust_name": data['name'], "fabric_color":data['color']})
当元素超过 1 个时,您只是在迭代字典的第一个索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.