从两个列表中插入数据以使用for循环进行字典

时间:2018-07-03 16:02:46

标签: python python-3.x for-loop

我尝试过:

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

6 个答案:

答案 0 :(得分:7)

您不需要显式循环。您可以使用zip合并两个列表,然后将其包装在字典中以获得所需的结果:

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

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

答案 1 :(得分:2)

您正在尝试将列表推导,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))

答案 2 :(得分:2)

使用邮政编码-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}

答案 3 :(得分: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)

答案 4 :(得分:1)

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'}

答案 5 :(得分:1)

您还可以使用熊猫:

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

熊猫系列的行为与字典非常相似,但是如果您真的希望以字典形式使用它,可以进行numbers_dict = dict(numbers_series)