Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将dict列表转换为dict的dict_Python_Python 3.x - Fatal编程技术网

Python 将dict列表转换为dict的dict

Python 将dict列表转换为dict的dict,python,python-3.x,Python,Python 3.x,如何将dict列表转换为dict的dict 这是我的清单: data = [{'id': '7249722264','title':'test'}, {'id': '111','test':'te11111st'}] 我必须将此数据集传递给接受以下格式数据的api: api_data = {'fields': {'id': '72497264', 'title': 'test'}} 我需要循环遍历数据列表中的元素并将其传递给api,如下所示: 对于列表中的每条记录: new_dict = {

如何将
dict
列表转换为
dict
dict

这是我的清单:

data = [{'id': '7249722264','title':'test'}, {'id': '111','test':'te11111st'}]
我必须将此数据集传递给接受以下格式数据的api:

api_data = {'fields': {'id': '72497264', 'title': 'test'}}
我需要循环遍历数据列表中的元素并将其传递给api,如下所示:

对于列表中的每条记录:

new_dict = {'fields': {'id': '72497264', 'title': 'test'}}
api.post(new_dict)

我怎样才能做到这一点?谢谢

您可以通过for循环这样做:

data = [{'id': '7249722264','title':'test'}, {'id': '111','test':'te11111st'}]
new_dict = {}
for e, i in enumerate(data):
  new_dict['fields'+str(e)] = i

print(new_dict)

>>> {'fields0': {'id': '72497264', 'title': 'test'}, 'fields1': {'id': '111','test':'te11111st'}}
但是您不能命名每个键
字段
,因为dict键是唯一的,所以您必须在
for
循环中每次调用API,或者像我上面所做的那样,在键名后面附加一个索引

编辑:替代性口述理解(狄龙·戴维斯的柯特西):


为什么字典的第二个元素中有
test
而不是
title
?在这种情况下应该输出什么?作为一个dict理解-
new_dict={'fields{}。格式(i):x代表i,x在enumerate(data)}
@taurus05中它们是等价的,但我觉得有选项很好。我通常倾向于理解它们的速度和避免嵌套膨胀,但每个人都有自己的偏好。谢谢马特和狄龙
data = [{'id': '7249722264','title':'test'}, {'id': '111','test':'te11111st'}]
new_dict = {'fields{}'.format(i):x for i, x in enumerate(data)}
print(new_dict)

    >>> {'fields0': {'id': '72497264', 'title': 'test'}, 'fields1': {'id': '111','test':'te11111st'}}