2016-05-25 11 views
1

乾杯、変換一つだけのアイテム

私は現在、コードの一部に取り組んでいると、私は私の問題のための最高の、より多くのニシキヘビとCPUの低コストのソリューションを見つけようとしています。

私は実際に私は、ファイルを読んで、「指標値」、例の配列である持っている:

>>> list = ['index_1 200', 'index_2 500', 'index_3 50'] 
>>> 
>>> list 
['index_1 200', 'index_2 500', 'index_3 50'] 

私は私のようにインデックス名を維持する辞書理解を作成しようとしていますstringですが、値をintに変換してください。私はこの目標を達成するために見つけた方法だった:

>>> dict((line.split()[0], int(line.split()[1])) for line in list) 
{'index_2': 500, 'index_3': 50, 'index_1': 200} 

しかし(line.split()[0], int(line.split()[1])部分は私のリストの例は、実際には単なる例であることから、より良い方法で行うことができる何かのように見える、私は巨大な見つけることが後で索引の行。

ありがとうございました。あなたは二回、各文字列を分割避けることができ、あなたは、このような辞書の理解を利用することができます

答えて

8

>>> mylist = ['index_1 200', 'index_2 500', 'index_3 50'] 
>>> mydict = {k:int(v) for (k,v) in (line.split() for line in mylist)} 
>>> mydict 
{'index_2': 500, 'index_3': 50, 'index_1': 200} 

編集

はPython 2.6では、あなたはかなり同じことを行うことができますが、ディックの理解の構文なし:

>>> mydict = dict((k,int(v)) for (k,v) in (line.split() for line in mylist)) 
+0

は、Python 2.7以上の魅力のように機能します。 Python 2.6でも似たようなことはありますか? – mvarge

+1

@mvarge私の編集 – khelwood

+1

はちょうど美しいです。 – mvarge