2014-09-18 37 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就會停止,這就是你想要的。