使用for循环将两个列表中的数据插入到dict [重复]

Posted

技术标签:

【中文标题】使用for循环将两个列表中的数据插入到dict [重复]【英文标题】:insert data from two lists to dict with for loop [duplicate] 【发布时间】:2018-12-12 00:30:55 【问题描述】:

我试过了:

numbers_dict = dict()
num_list = [1,2,3,4]
name_list = ["one","two","three","four"]
numbers_dict[name for name in name_list] = num for num in num_list

结果我得到了这个异常:

File "<stdin>", line 1
numbers_dict[name for name in name_list] = num for num in num_list

【问题讨论】:

列表长度不同的情况需要处理吗? @Two-Bit Alchemist no 此处适用的另一个选项:name: num for num, name in enumerate(name_list, 1) 【参考方案1】:

您不需要显式循环。您可以使用 zip 加入您的两个列表,然后将其包装在 dict 中以获得您正在寻找的结果:

>>> dict(zip(num_list, name_list))

1: 'one', 2: 'two', 3: 'three', 4: 'four'

【讨论】:

【参考方案2】:

您需要使用 For 循环吗? 所以只是:

for i in range(len(num_list)):
    numbers_dict[num_list[i] = name_list[i]]

但您可以使用的最佳工具是zip

numbers_dict = zip(num_list, name_list)

【讨论】:

在这种情况下,num_list 本身也可以表示为range(1, 5),从而简化了您的构造。 我完全同意你的看法,但我只是在补充 OP 的回答。【参考方案3】:

你也可以使用熊猫:

numbers_series = pd.Series(name_list,index=num_list)

熊猫系列很像字典,但如果你真的想要字典形式,你可以numbers_dict = dict(numbers_series)

【讨论】:

你可以使用热核装置来杀死蚊子。 :) 当 OP 要求 Pandas 解决方案时,Pandas 很好,或者如果他们有大量数据要处理,但当 OP 只想将一对小列表变成一个字典时,这就有点过分了。【参考方案4】:

您正在尝试将列表推导、for 循环和多键访问混合到一个表达式中。不幸的是,这在 Python 中是不可能的。选择一种方法并坚持下去。

这里有一些选项。它们都涉及zip,它从每个可按顺序迭代的参数中返回元素。

for 循环

d = 
for k, v in zip(name_list, num_list):
    d[k] = v

字典理解

d = k: v for k, v in zip(name_list, num_list)

dict 构造函数

d = dict(zip(name_list, num_list))

【讨论】:

【参考方案5】:

使用 zip - https://www.programiz.com/python-programming/methods/built-in/zip。

numbers_dict = dict()
num_list = [1,2,3,4]
name_list = ["one","two","three","four"]

numbers_dict = dict(zip(name_list, num_list))

然后print(numbers_dict) 给出'one': 1, 'two': 2, 'three': 3, 'four': 4

【讨论】:

【参考方案6】:

dictlist 都有推导式。 dict 看起来像字面语法:

key: value for key, value in iterable

在您的情况下,zip 可能是正确的工具:

>>> num_list = range(1, 5)
>>> name_list = ['one', 'two', 'three', 'four']
>>> zip(num_list, name_list)
[(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
>>> dict(_)
1: 'one', 2: 'two', 3: 'three', 4: 'four'

【讨论】:

以上是关于使用for循环将两个列表中的数据插入到dict [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从for循环将系列附加到dict或list或dataframe?

使用两个嵌套的 for 循环和 str() 函数将列表中的偶数相加

For循环正在覆盖列表中的字典值[重复]

将字典附加到循环中的列表

使用两个for循环给二维数组赋固定值,并输出?

如何在列表pymssql中循环插入值?