2012-11-20 7 views
6

私は、最初の行をキーに変換し、残りの行を値に変換する行列をインポートしています。私は各値でキーを圧縮して辞書に入れたいと思う。Pythonでリスト内の個々の値を持つキーをどのように圧縮するのですか?

例:

私は、次のしている場合:

私は(V IN xに対して)Vの各値を取り、(KおよびX)、それらを圧縮したいその後、辞書に変換します。

次に、辞書のリストに辞書を追加します。私が持っているべきで終わり

dicts = [{'a':1, 'b':2}, {'a':3, 'b':4}] 

を今、私は私のキーと私の行をビュンています。これをどうやって解決するのですか?

itertools.cycle()を使用して
matrix_filename = raw_input("Enter the matrix filename: ") 
matrix = [i.strip().split() for i in open(matrix_filename).readlines()] 
keys = matrix[0] 
vals= (matrix[1:]) 
N=len(vals) 

dicts = [] 

for i in range(1,N): 
    for j in range(1,N): 
     vals[i-1][j-1] = int(matrix[i][j]) 
     dicts = dict(zip(keys,vals)) 

答えて

3

In [51]: from itertools import * 

In [52]: cyc=cycle(k) 

In [53]: [{next(cyc):y for y in x} for x in v] 
Out[53]: [{'a': 1, 'b': 2}, {'a': 3, 'b': 4}] 
12
>>> [dict(zip(k, x)) for x in v] 
[{'a': 1, 'b': 2}, {'a': 3, 'b': 4}] 
+2

1あなたは私にループのネストされたをしたものを、1行でそれを得ました。 :( –

+0

あなたのツールを知ったら、Pythonで簡単にやってみるのが大好きですか? –