Python 3.x 将列表映射到单个字典键和值

Python 3.x 将列表映射到单个字典键和值,python-3.x,dictionary,Python 3.x,Dictionary,我有5张单子。我想将这5个列表映射到一个字典列表,每个字典实例的5个列表中的每一个都有一个键/值对[n]。我的第一个想法是建立一个循环来枚举字典列表中出现的每一个字典,但不确定它是什么样子。有什么想法吗 name = ["John", "Sally", "Allen", "Nick", "Charles", "Richie", "Derek"] age = [21, 36, 33, 29, 40, 18, 35] hometown = ["New York", "Washington", "Ph

我有5张单子。我想将这5个列表映射到一个字典列表,每个字典实例的5个列表中的每一个都有一个键/值对[n]。我的第一个想法是建立一个循环来枚举字典列表中出现的每一个字典,但不确定它是什么样子。有什么想法吗

name = ["John", "Sally", "Allen", "Nick", "Charles", "Richie", "Derek"]
age = [21, 36, 33, 29, 40, 18, 35]
hometown = ["New York", "Washington", "Philadelphia", "Atlanta", "Miami", "LA", "Seattle"]
favorite_food = ["chicken", "steak", "spaghetti", "fish", "oreos", "hamburger", "cereal"]
pet = ["cat", "fish", "dog", "hamster", "dog", "cat", "snake"]
字典列表,以便

D[0]={'name':'John', 'age':'21', 'hometown': 'New York', 'favorite_food': 
'chicken', 'pet': 'cat'}

您可以使用内置函数
zip
和list/dict进行以下操作:

name = ["John", "Sally", "Allen", "Nick", "Charles", "Richie", "Derek"]
age = [21, 36, 33, 29, 40, 18, 35]
hometown = ["New York", "Washington", "Philadelphia", "Atlanta", "Miami", "LA", 
"Seattle"]
favorite_food = ["chicken", "steak", "spaghetti", "fish", "oreos", "hamburger", "cereal"]
pet = ["cat", "fish", "dog", "hamster", "dog", "cat", "snake"]

fields = ["name", "age", "hometown", "favourite_food", "pet"]

zipped = zip(name, age, hometown, favorite_food, pet)

d = [{k: v for k, v in zip(fields,el)} for el in zipped]

zip
函数将允许您对多个列表进行“配对”或分组

对于前三个属性,可以执行以下操作以获取元组:

>>> for i in zip(name, age, hometown):
...   print(i)
...
('John', 21, 'New York')
('Sally', 36, 'Washington')
('Allen', 33, 'Philadelphia')
('Nick', 29, 'Atlanta')
('Charles', 40, 'Miami')
('Richie', 18, 'LA')
('Derek', 35, 'Seattle')
如果你列个清单

L = []
您可以向其中添加词典:

>>> L=[]
>>> for i in zip(name, age, hometown):
...   d = {}
...   d['name']=t[0]
...   d['age']=t[1]
...   d['hometown']=t[2]
...   L.append(d)
...

这是前三种情况——延伸到整个批次应该很清楚。

嗨,你自己试过什么吗?看一看内置的功能,非常感谢-这真是让我头痛不已@如果你满意的话,约翰利可以随意投票并接受答案