我尝试过:
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
答案 0 :(得分:7)
您不需要显式循环。您可以使用zip合并两个列表,然后将其包装在字典中以获得所需的结果:
>>> dict(zip(num_list, name_list))
{1: 'one', 2: 'two', 3: 'three', 4: 'four'}
答案 1 :(得分:2)
您正在尝试将列表推导,for
循环和多个键访问混合到一个表达式中。不幸的是,这在Python中是不可能的。选择一种方法并坚持下去。
以下是一些选项。它们都涉及zip
,它从每个可依次迭代的参数中返回元素。
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)
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)
对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'}
答案 5 :(得分:1)
您还可以使用熊猫:
numbers_series = pd.Series(name_list,index=num_list)
熊猫系列的行为与字典非常相似,但是如果您真的希望以字典形式使用它,可以进行numbers_dict = dict(numbers_series)
。