矩阵之间的映射

时间:2018-09-27 18:35:10

标签: python-3.x list matrix mapping

我有2个矩阵:

list_alpha = [['a'], 
              ['b'], 
              ['c'], 
              ['d'], 
              ['e']]

list_beta = [['1', 'a', 'e', 'b'],
             ['2', 'd', 'X', 'X'], 
             ['3', 'a', 'X', 'X'],
             ['4', 'd', 'a', 'c'],

我的目标是,如果list_alpha中的一个字母位于list_beta的子列表中,则list_beta中该行的第一个元素(#)将添加到list_alpha中的正确行中。 所以我的输出是:

final_list = [['a', '1', '3', '4'], 
              ['b', '1'], 
              ['c', '4'], 
              ['d', '2', '4'], 
              ['e', '1']] 

但是我对python和编码来说还是很陌生,我不确定该怎么做。有没有办法对此进行编码?还是我必须更改任一列表中数据的存储方式?


编辑:

将list_alpha更改为词典有帮助!

最终代码:

dict_alpha = {'a': [], 'b': [], 'c': [], 'd': [], 'e':[]}
list_beta = [['1', 'a', 'e', 'b'],
             ['2', 'd', 'X', 'X'],
             ['3', 'a', 'X', 'X'],
             ['4', 'd', 'a', 'c'],
             ['5', 'X', 'X', 'e'],
             ['6', 'c', 'X', 'X']]
for letter in dict_alpha:
    for item in list_beta:
        if letter in item:
            dict_alpha.get(letter).append(item[0])
print(dict_alpha)

1 个答案:

答案 0 :(得分:0)

您可以像使用dict_alpha一样使用list_alpha,然后修复您的for循环。

例如:

dict_alpha = [['a'],
              ['b'], 
              ['c'], 
              ['d'], 
              ['e']]

list_beta = [['1', 'a', 'e', 'b'],
             ['2', 'd', 'X', 'X'],
             ['3', 'a', 'X', 'X'],
             ['4', 'd', 'a', 'c'],
             ['5', 'X', 'X', 'e'],
             ['6', 'c', 'X', 'X']]

for al in dict_alpha:
    for bt in list_beta:
        for i in range(1, len(bt)):
            if (bt[i] == al[0]):
                al.append(bt[0])

print(dict_alpha)

输出:

[['a', '1', '3', '4'], 
['b', '1'], 
['c', '4', '6'], 
['d', '2', '4'], 
['e', '1', '5']]

希望对您有所帮助!