我可以使用列表理解语法来创建词典吗?

例如,通过迭代成对的键和值:

d = {... for k, v in zip(keys, values)}

当前回答

再举一个例子。假设您有以下列表:

nums = [4,2,2,1,3]

您希望将其转换为dict,其中键是索引,值是列表中的元素。您可以使用以下代码行执行此操作:

{index:nums[index] for index in range(0,len(nums))}

其他回答

假设blah-blah-blah是一个两元组列表:

让我们看看两种方法:

# method 1
>>> lst = [('a', 2), ('b', 4), ('c', 6)]
>>> dict(lst)
{'a': 2, 'b': 4, 'c': 6}
# method 2
>>> lst = [('a', 2), ('b', 4), ('c', 6)]
>>> d = {k:v for k, v in lst}
>>> d
{'a': 2, 'b': 4, 'c': 6}

在Python 2.7中,它类似于:

>>> list1, list2 = ['a', 'b', 'c'], [1,2,3]
>>> dict( zip( list1, list2))
{'a': 1, 'c': 3, 'b': 2}

给他们拉链!

再举一个例子。假设您有以下列表:

nums = [4,2,2,1,3]

您希望将其转换为dict,其中键是索引,值是列表中的元素。您可以使用以下代码行执行此操作:

{index:nums[index] for index in range(0,len(nums))}

这段代码将使用列表理解为多个列表创建字典,这些列表具有可用于pd.DataFrame()的不同值

#Multiple lists 
model=['A', 'B', 'C', 'D']
launched=[1983,1984,1984,1984]
discontinued=[1986, 1985, 1984, 1986]

#Dictionary with list comprehension
keys=['model','launched','discontinued']
vals=[model, launched,discontinued]
data = {key:vals[n] for n, key in enumerate(keys)}

#Convert dict to dataframe
df=pd.DataFrame(data)
display(df)

enumerate将向vals传递n,以使每个键与其列表匹配

Python版本>=2.7,请执行以下操作:

d = {i: True for i in [1,2,3]}

Python版本<2.7(RIP,2010年7月3日-2019年12月31日),请执行以下操作:

d = dict((i,True) for i in [1,2,3])