2012-11-20 14 views
6

Matrisi içe aktarıyorum, ilk satırı tuşlara çeviriyorum ve satırların geri kalanını değerlere dönüştürüyorum. Anahtarları her bir değerle sıkıştırmak ve bunları bir sözlüğe eklemek istiyorum.Anahtarları python'daki listelerimdeki tek tek değerlerle nasıl kaydederim?

örn:

I (v x) v her değeri almak istiyorum ve bunları zip (k ve x) daha sonra bir sözlüğe dönüştürmek:

Aşağıdaki varsa .

Ardından sözlükleri bir sözlük listesine ekleyeceğim.

Sonunda ben sahip olmalıdır: Şu anda
dicts = [{'a':1, 'b':2}, {'a':3, 'b':4}] 

, ben sadece benim tuşları ile benim satırları sıkıştırma ediyorum. Bunu nasıl düzeltirim? itertools.cycle() kullanarak

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

cevap

3

: döngü için bana iç içe ne aldı

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 sadece bir satırda aldım. :( –

+0

Aletlerinizi tanıdıktan sonra Python'da ne kadar kolay olduğunu bilmiyor musunuz? –