从两个单独列表中的数据填充字典的Python过程

从两个单独列表中的数据填充字典的Python过程,python,dictionary,Python,Dictionary,我正在尝试创建一个自动化的python过程,该过程使用两个单独的列表来创建字典,但到目前为止我失败了。我有两个排序列表,其中第一个列表中的第n项对应于第二个列表中的第n项,我想将它们合并到一个字典中 例如,2个列表的子集如下所示 name = ['Adam', 'Alfred', 'Amy', 'Andy', 'Bob'] year = [1972, 1968, 1985, 1991, 1989] 我希望我的输出是: birth_years = {'Adam':1972, 'Alfred':1

我正在尝试创建一个自动化的python过程,该过程使用两个单独的列表来创建字典,但到目前为止我失败了。我有两个排序列表,其中第一个列表中的第n项对应于第二个列表中的第n项,我想将它们合并到一个字典中

例如,2个列表的子集如下所示

name = ['Adam', 'Alfred', 'Amy', 'Andy', 'Bob']
year = [1972, 1968, 1985, 1991, 1989]
我希望我的输出是:

birth_years = {'Adam':1972, 'Alfred':1968, 'Amy':1985, 'Andy':1991, 'Bob':1989}

我试图用for循环来实现这一点,但我无法让它工作。非常感谢您的帮助。

使用
zip
dict
函数从元组列表中构造字典:

birth_years = dict(zip(name, year))
如果你好奇的话,我会尝试使用
for
循环来实现这一点:

birth_years = {}

for index, n in enumerate(name):
  birth_years[n] = years[index]

我想我更喜欢第一个例子。

您的列表最好命名为
名称
年份
。通过尝试使用
for
循环,您获得了一个良好的开端。大多数实际的数据处理问题都涉及到错误检查,这对于一行程序来说有点困难。例如:

birth_years = {}
for i in range(len(name)):
    birth_years[name[i]] = year[i]
birth_years = {}
for i, name in enumerate(names):
    if name in birth_years:
        log_duplicate(i, name, years[i]))
    else:
        birth_years[name] = years[i]

尝试字典理解:

birth_years = {nm:year[idx] for idx, nm in enumerate(name)}

那不应该是出生年吗?这是家庭作业吗?如果没有,重新思考上游正在发生的事情;将数据结构化为并行列表不是一个好主意,也不是自然发生的。例如,这些内容自然会出现在数据文件的同一行或数据库表或电子表格的同一行中,您可以在读取输入时将它们填充到
dict
中。