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

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

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

  1. lists_before = [['A', 'B', 'C'], ['A', 'D'], ['D', 'E']]
  2. mapped_dictionary = {'A': 'G', 'B': 'G', 'C':'F'}

下面是我使用的代码:

  1. lists_after = []
  2. for element in lists_before:
  3. new_element = []
  4. for letter in element :
  5. if letter in list(mapped_dictionary.values()):
  6. letter = repl_dic.get(letter)
  7. new_element.append(letter)
  8. lists_after.append(new_element)

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

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

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

klsxnrf1

klsxnrf11#

您可以这样做:
输入:

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

代码:

  1. l_new = list()
  2. for lst in l:
  3. lst_new = list()
  4. for ele in lst:
  5. lst_new.append(m.get(ele, ele))
  6. l_new.append(lst_new)

输出:

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

或使用1-liner:

  1. [[m.get(ele, ele) for ele in lst] for lst in l]
  2. [['G', 'G', 'F'], ['G', 'D'], ['D', 'E']]
展开查看全部

相关问题