2011-01-19 60 views
3

假設我有兩個列表,我想作一本字典從他們。像:從兩個iterables創建字典和消費兩者

>>> l = [1, 2, 3, 4, 5] 
>>> x = ['a', 'b', 'c'] 
>>> dict(zip(l, x)) 
{1: 'a', 2: 'b', 3: 'c'} 

這個工程,我想它要和由於名單是長度不相等,元素45被排除在外,並沒有對他們沒有相應的值。這是預期的。

但是,如果我想要一個值,說Nonel鍵是什麼?我想輸出是:

{1: 'a', 2: 'b', 3: 'c', 4: None, 5: None}

一個我認爲是遍歷這兩個解決方案,比較它們的長度並在需要時追加None。我有一個解決方案也可以工作,但我想知道它是否可以以更簡單更簡單的方式完成?

回答

12

使用

dict(itertools.izip_longest(l, x)) 
# {1: 'a', 2: 'b', 3: 'c', 4: None, 5: None} 
+1

嘿,完美!我正在猜測這樣的事情存在! – user225312 2011-01-19 16:35:12

相關問題