如何在python的列表中使用单个值压缩密钥?

ael*_*eli 6 python dictionary key

我正在导入一个矩阵,将第一行转换为键,然后将其余行转换为值.我想用每个值压缩键并将它们放在字典中.

例如:

如果我有以下内容:

k = ['a', 'b']
v = [[1,2], [3,4]]
Run Code Online (Sandbox Code Playgroud)

我想取v中的每个值(对于x中的x)并压缩它们(k和x)然后转换为字典.

然后我将字典添加到字典列表中.

最后我应该:

dicts = [{'a':1, 'b':2}, {'a':3, 'b':4}]
Run Code Online (Sandbox Code Playgroud)

现在,我只用我的钥匙拉我的行.我该如何解决?

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))  
Run Code Online (Sandbox Code Playgroud)

app*_*tor 12

>>> [dict(zip(k, x)) for x in v]
[{'a': 1, 'b': 2}, {'a': 3, 'b': 4}]
Run Code Online (Sandbox Code Playgroud)

  • +1你刚刚把它放在一行中,是什么让我得到了一个嵌套的for循环.:( (2认同)

Ash*_*ary 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}]
Run Code Online (Sandbox Code Playgroud)