【问题标题】:Mapping between matrices矩阵之间的映射
【发布时间】:2019-03-03 17:38:02
【问题描述】:

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

【问题讨论】:

  • 我会将 list_alpha 转换为字母->空列表的字典,例如 {"a": [], "b":[] ... },然后遍历 list_beta 中的每个列表,并根据需要将数字附加到字典中的列表。

标签: python-3.x list matrix mapping


【解决方案1】:

您可以像使用 list_alpha 一样使用 dict_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']]

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 2019-02-03
    • 2014-08-06
    • 2013-05-16
    • 2014-05-12
    • 2019-03-31
    • 1970-01-01
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多