6

マトリックスをインポートして、最初の行をキーに変換し、残りの行を値に変換しています。キーを各値で圧縮して辞書に入れたい。

元:

私が以下を持っている場合:

k = ['a', 'b']
v = [[1,2], [3,4]]

v の各値 (v の x の場合) を取得し、それらを圧縮して (k と x)、辞書に変換します。

次に、辞書を辞書のリストに追加します。

最後に、次のものが必要です。

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

現在、キーを使用して行を圧縮しているだけです。これを修正するにはどうすればよいですか?

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))  
4

3 に答える 3

12
>>> [dict(zip(k, x)) for x in v]
[{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
于 2012-11-20T18:54:36.220 に答える
3

使用itertools.cycle():

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}]
于 2012-11-20T18:54:29.890 に答える