我有一个API响应,用于列出所有卷的信息。我想遍历响应并获取name
的值,并将其中每个动态地分配给每个 url 。
这是我的主要API端点,它返回以下内容:
[{'source': None, 'serial': '23432', 'created': '2018-11-
12T04:27:14Z', 'name': 'v001', 'size':
456456}, {'source': None, 'serial': '4364576',
'created': '2018-11-12T04:27:16Z', 'name': 'v002',
'size': 345435}, {'source': None, 'serial':
'6445645', 'created': '2018-11-12T04:27:17Z', 'name': 'v003', 'size':
23432}, {'source': None,
'serial': 'we43235', 'created': '2018-11-12T04:27:20Z',
'name': 'v004', 'size': 35435}]
我这样做是为了获得'name'
的值
test_url = 'https://0.0.0.0/api/1.1/volume'
test_data = json.loads(r.get(test_url, headers=headers,
verify=False).content.decode('UTF-8'))
new_data = [{
'name': value['name']
} for value in test_data]
final_data = [val['name'] for val in new_data]
for k in final_data:
print(k)
k
打印出name
中的所有值,但是我被困在我希望能够使用它来分配不同的API端点的地方。现在,k
返回
v001
v002
v003
v004
我想将它们每个分配给不同的端点,如下所示:
url_v001 = test_url + v001
url_v002 = test_url + v002
url_v003 = test_url + v003
url_v004 = test_url + v004
我希望动态地完成此操作,因为主API返回的卷名可能超过4个。
答案 0 :(得分:2)
这样做不是很好,但是最好的方法是使用字典:
d={}
for k in final_test:
d['url_'+k] = test_url + k
或者在字典理解方面要好得多:
d={'url_'+k:test_url + k for k in final_test}
现在:
print(d)
两者均重现:
{'url_v001': 'https://0.0.0.0/api/1.1/volumev001', 'url_v002': 'https://0.0.0.0/api/1.1/volumev002', 'url_v003': 'https://0.0.0.0/api/1.1/volumev003', 'url_v004': 'https://0.0.0.0/api/1.1/volumev004'}
要使用d
:
for k,v in d.items():
print(k+',',v)
输出:
url_v001, https://0.0.0.0/api/1.1/volumev001
url_v002, https://0.0.0.0/api/1.1/volumev002
url_v003, https://0.0.0.0/api/1.1/volumev003
url_v004, https://0.0.0.0/api/1.1/volumev004