我正在导入一个矩阵,将第一行转换为键,然后将其余行转换为值。我想用每个值压缩键并将它们放在字典中。
前:
如果我有以下内容:
k = ['a', 'b']
v = [[1,2], [3,4]]
我想取v中的每个值(对于x中的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))
答案 0 :(得分:12)
>>> [dict(zip(k, x)) for x in v]
[{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
答案 1 :(得分: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}]