2012-11-20 4 views
6

Ich importiere eine Matrix, indem ich die erste Zeile in Schlüssel umwandele und den Rest der Zeilen in Werte umwandle. Ich möchte die Schlüssel mit jedem Wert zippen und sie in ein Wörterbuch setzen.Wie komprimiere ich Schlüssel mit individuellen Werten in meinen Listen in Python?

ex:

Wenn ich habe folgendes:

ich jeden Wert in v nehmen wollen (für x in v) und RV ihnen (k und x) dann in einem Wörterbuch konvertieren .

Dann werde ich die Wörterbücher auf eine Liste der Wörterbücher hinzuzufügen.

Am Ende sollte ich:

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

Gerade jetzt, ich nur mit meinen Schlüsseln meine Zeilen bin zippen. Wie behebe ich das?

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

Antwort

3

mit 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}] 
12
>>> [dict(zip(k, x)) for x in v] 
[{'a': 1, 'b': 2}, {'a': 3, 'b': 4}] 
+2

+1 Sie haben es gerade in einer Linie, was mich für Schleife eine verschachtelte nahm. :( –

+0

Liebst du es nicht, wie einfach es in Python ist, wenn du deine Werkzeuge kennst? –

Verwandte Themen