动态将获得的结果分配给Python中的变量

时间:2019-02-13 02:52:37

标签: python

我有一个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个。

1 个答案:

答案 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