2016-06-25 7 views
1

私はlistを持っています。これを辞書に変換しますdictここで要素のキーは要素の位置ですリスト:Python:リストを辞書に変換します。ここでkeyはリストの要素のインデックスです

>>> list_ = ['a', 'b', 'c', 'd'] 
>>> # I want the above list to be converted to a dict as shown below 
... 
>>> list_to_dict = {1: 'a',2: 'b', 3: 'c',4: 'd'} 

私はそれが簡単で知っているが、以下では一つとして多くの方法があります:

>>> {index+1: item for index, item in enumerate(list_)} 
{1: 'a', 2: 'b', 3: 'c', 4: 'd'} 

は私がcollections.defaultdict仕事は、我々は上記目的を達成するためにそれを使用する方法を完全に理解することはできませんか?あるいは、他のより効率的な方法ですか?

+2

あなたはどう思いますかは、あなたが持っているコードについては非効率的ですか?なぜあなたはより効率的である必要があると思いますか?なぜあなたは 'defaultdict'がまったく助けになると思いますか? – jonrsharpe

答えて

6

defaultdict()あなたはキーを生成しているので、それはここであなたを助けにはなりません、デフォルトを生成します。

enumerate()を使用するのが最善の方法です。 enumerate()への2番目の引数は開始値ある

dict(enumerate(list_, 1)) 

;:あなたはにそれを簡素化することができます1に設定すると、カウントを増やす必要はありません。 dict()は、(index, value)のペアを直接使用してを消費することができます。

+0

はい、私のコードで冗長性を削除していただきありがとうございます! – wolframalpha

1

defaultdictも使用できます。

from collections import defaultdict 
list_ = ['a','b','c','d'] 
s = (zip([i for i in range(1, len(list_) + 1)], list_)) 
list_to_dict = defaultdict(str) 

for k, v in s: 
    list_to_dict[k] = v 

print list_to_dict 

以下のような...

dict(zip([i for i in range(1, len(list_) + 1)], list_)) 
+2

あなたは実際にはデフォルトのdict動作を使用していませんが、 'list_to_dict = dict()'を実行しても全く同じ動作をします。 –