【问题标题】:Replace elements in list based on a dictionary mapping table根据字典映射表替换列表中的元素
【发布时间】:2021-09-18 18:26:54
【问题描述】:

我想根据字典映射表替换列表列表中的元素,并尝试如下:

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)

lists_after 的预期输出是:

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

但是,我得到的输出还是和lists_before一样。

我不知道出了什么问题。有人可以帮我吗?

【问题讨论】:

  • [[mapped_dictionary.get(char, char) for char in sl] for sl in lists_before]
  • 只是刮一下.values()。您需要它们位于 dict 中(就像它的键一样)。

标签: python list dictionary replace mapping


【解决方案1】:

你可以这样做:

输入:

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']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-03
    • 2018-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2022-07-10
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多