基于字典Map表替换列表中的元素

ddarikpa  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(421)

我想替换基于字典Map表的列表列表中的元素,并尝试了以下操作:

lists_before = [['A', 'B', 'C'], ['A', 'D'], ['D', 'E']]

mapped_dictionary = {'A': 'G',  'B': 'G', 'C':'F'}

下面是我使用的代码:

lists_after = []
for element in lists_before:
    new_element  = [] 
    for letter in element :
        if letter in list(mapped_dictionary.values()):
            letter = repl_dic.get(letter)
        new_element.append(letter)
    lists_after.append(new_element)

之后列表_的预期输出为:

[['G', 'G', 'F'],['G','D'],['D','E']]

然而,我得到的输出仍然和以前一样。
我不知道出了什么问题。有人能帮我吗?

klsxnrf1

klsxnrf11#

您可以这样做:
输入:

l = [['A', 'B', 'C'], ['A', 'D'], ['D', 'E']]
m = {'A': 'G',  'B': 'G', 'C': 'F'}

代码:

l_new = list()
for lst in l:
    lst_new = list()
    for ele in lst:
        lst_new.append(m.get(ele, ele))
    l_new.append(lst_new)

输出:

[['G', 'G', 'F'], ['G', 'D'], ['D', 'E']]

或使用1-liner:

[[m.get(ele, ele) for ele in lst] for lst in l]

[['G', 'G', 'F'], ['G', 'D'], ['D', 'E']]

相关问题