5

我正在尝试创建一个使用两个单独的列表来创建字典的自动化 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 循环来做到这一点,但我无法让它工作。我很感激任何帮助。

4

4 回答 4

14

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

birth_years = dict(zip(name, year))

如果你很好奇,这就是我尝试使用for循环的方式:

birth_years = {}

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

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

于 2012-04-04T01:24:13.377 回答
1
birth_years = {}
for i in range(len(name)):
    birth_years[name[i]] = year[i]
于 2012-04-04T01:32:54.570 回答
1

尝试字典理解:

birth_years = {nm:year[idx] for idx, nm in enumerate(name)}
于 2014-04-03T12:23:48.477 回答
0

您的列表最好命名为namesyearsfor通过尝试使用循环来实现,您有了一个良好的开端。大多数实际的数据处理问题都涉及错误检查,这对于单行来说有点困难。例子:

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]
于 2012-04-04T15:28:42.533 回答