Python从多个列表创建字典列表

时间:2020-07-14 03:56:11

标签: python

如何将列表变成词典列表?

发件人:

name=['Mary','Susan','John']
age=[15,30,20]
sex=['F','F','M']

我想要:

mylist= [ {'name':'Mary','age':15,'sex':'F'},
          {'name':'Susan','age':30,'sex':'F'},
          {'name':'John','age':20,'sex':'M'},
          ]

3 个答案:

答案 0 :(得分:3)

这是zip函数的完美示例。 https://docs.python.org/3.8/library/functions.html#zip

给出:

name = ['Mary','Susan','John']
age = [15,30,20]
sex = ['F','F','M']

然后:

output = []
for item in zip(name, age, sex):
  output.append({'name': item[0], 'age': item[1], 'sex': item[2]})

将产生

[
  {'name': 'Mary', 'age': 15, 'sex': 'F'}, 
  {'name': 'Susan', 'age': 30, 'sex': 'F'}, 
  {'name': 'John', 'age': 20, 'sex': 'M'},
]

还有一种更短的列表理解方法:

output = [{'name': t[0], 'age': t[1], 'sex': t[2]} for t in zip(name, age, sex)]

答案 1 :(得分:0)

这里是一个例子:

def Convert(a): 
    it = iter(lst) 
    res_dct = dict(zip(it, it)) 
    return res_dct 
      
# Driver code 
lst = ['a', 1, 'b', 2, 'c', 3]  
print(Convert(lst)) 

您可以将其用作代码。

答案 2 :(得分:0)

最简单的解决方法是:

name=['Mary','Susan','John']
age=[15,30,20]
sex=['F','F','M']
list_dict = []
for i in range(0, len(name)):
    dict_temp = {}
    dict_temp['name'] = name[i]
    dict_temp['age'] = age[i]
    dict_temp['sex'] = sex[i]
    list_dict.append(dict_temp)

我假设所有列表的长度都相同。