使用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】:dict
和 list
都有推导式。 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?