2014-09-18 42 views
-1

大小不同的两个列表:如何建立字典从两个列表

numbers=[1,2,3,4,5] 
cities=['LA','NY','SF'] 

我需要得到这个:

result={1:'LA', 2:'NY', 3:'SF'} 

我认为有这样做的:

result={number:cities[numbers.index(number)] for number in numbers if numbers.index(number)<len(cities)} 

但是,这一行很长。我想知道是否有另一种实现相同目标的方法。

日后进行编辑:

还提出了旨在利用zip多个建议:

dict(zip(cities, numbers)) 

虽然这是一个绝对是一个简单的语法比我用我不知道这将是更快地执行列表理解?

回答

3

使用zip,它只会压缩高达最短序列

dict(zip(cities, numbers)) 
1
numbers=[1,2,3,4,5] 
cities=['LA','NY','SF'] 
dict(zip(cities,numbers)) 

结束;)

我怀疑它虽然复制 - 在提问之前搜索

+0

如果它的重复“他们”通常很快就知道它是! – alphanumeric 2014-09-18 20:05:49

1

的最简单的可能是dict(zip(numbers,cities)) 一旦任何列表结束,zip就会停止,这就是你想要的。