2011-01-19 13 views
3

2つのリストがあり、それらから辞書を作成したいとします。以下のような:これは私がするとリスト以来、それをしたいと思いとして働く2つのイテラブルから辞書を作成して両方を消費する

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

は同じ長さではなく、要素45が取り残されており、それらには、対応する値はありません。それは予想通りです。

しかし、私が値を欲しいとすれば、のキーにはNoneと言いますか?私は、両方を反復処理し、それらの長さを比較し、必要な場合Noneを追加することだと思ったソリューションの

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

一つ:私は出力になりたいと思います。私にも解決策がありますが、もっと簡単で短期間で解決できるかどうか疑問に思っていましたか?

答えて

12

使用

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

へぇ、完璧!私はこのような何かが存在すると推測していた! – user225312

+0

BTW:Python 3では、 "zip_longest"と呼ばれています(先頭に「i」はありません)。 – rbp

関連する問題