Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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 如何从嵌套列表创建词典列表_Python_List_Dictionary - Fatal编程技术网

Python 如何从嵌套列表创建词典列表

Python 如何从嵌套列表创建词典列表,python,list,dictionary,Python,List,Dictionary,我有一个字典“键”的标题列表和一个嵌套列表,我想用它作为“值”,我想返回一个字典列表。但是,当我迭代嵌套列表和标题列表并将字典附加到列表中时,我只得到最后一个字典。 我做错了什么 rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']] header = ['Name','Age','Gender'] d = {} data = [] for item in rows: for key,value in zip(header

我有一个字典“键”的标题列表和一个嵌套列表,我想用它作为“值”,我想返回一个字典列表。但是,当我迭代嵌套列表和标题列表并将字典附加到列表中时,我只得到最后一个字典。 我做错了什么

rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']]
header = ['Name','Age','Gender']
d = {}
data = []
for item in rows:
    for key,value in zip(header,item):
      d[key] = value
data.append(d)

data
我得到的输出:

[{'Age': 30, 'Gender': 'M', 'Name': 'Paul'},
 {'Age': 30, 'Gender': 'M', 'Name': 'Paul'},
 {'Age': 30, 'Gender': 'M', 'Name': 'Paul'}]
我的期望输出:

[{'Name': 'Branden', 'Age': 27, 'Gender': 'M'}, 
{'Name': 'Casey', 'Age': 22, 'Gender': 'F'}, 
{'Name': 'Paul', 'Age': 30, 'Gender': 'M'}]

我在这里做错了什么?

dict
将元组中的一个可数元组解释为键值对。因此,您所要做的就是调用
dict
,使用
zip(headerrow,next_row)
(伪代码!)作为所有行的参数

rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']]
header = ['Name','Age','Gender']
d = {}
data = []
for item in rows:
    for key,value in zip(header,item):
      d[key] = value
data.append(d)

data
>>> header = ['key1', 'key2', 'key3']
>>> values = [['a', 'b', 'c'], ['d', 'e', 'f']]
>>> dicts = [dict(zip(header, v)) for v in values]
>>> dicts
[{'key3': 'c', 'key2': 'b', 'key1': 'a'}, {'key3': 'f', 'key2': 'e', 'key1': 'd'}]

您没有为每个项目创建新词典。将
d={}
移动到行中项目的
行之后:

您需要为行中的每个子列表创建一个新字典,并将其附加到数据中,如下所示:

rows = [['Branden',27,'M'],['Casey',22,'F'],['Paul',30,'M']]
header = ['Name','Age','Gender']
data = []
for sublist in rows:
    d = {} #new dictionary per sublist
    for i,element in enumerate(sublist):
        # i is the iteration number, beginning with 0
        d [header[i]] = element
    data.append(d)
print (data)
打印(在一行上):


请输入更多代码,您的措辞没有清楚地描述您正在遇到的问题或您正在寻求的解决方案。您只有一本字典。为每个条目创建一个新条目;将
d={}
移动到循环中。请将您的代码作为文本包含在内,该图片可能会在一段时间内脱机,使该问题对未来的访问者毫无用处。