【问题标题】:Python - Removing the Duplicates from Nested Lists (within Individual LIST Item values) [duplicate]Python - 从嵌套列表中删除重复项(在单个列表项值内)[重复]
【发布时间】:2020-07-06 12:36:55
【问题描述】:

请注意,与此特定问题类似的问题尚未出现。但不同的存在。因此发布问题以征求建议。

它用于从嵌套列表中删除单个列表项中的重复项并保留顺序

请参阅下面的问题以获取更多详细信息并提出建议。

list_1 = [['A1', 'B1', 'A1'],
          ['A2', 'B2', 'B2'],
          ['A3', 'B3', 'C3']]

list_1 中的第一项有 2 个“A1”,第二项有 2 个“B2”,第三项中没有重复项。因此需要消除第一和第二项中的欺骗,并且还需要保留订单。

预期输出列表如下:

list_op = [['A1', 'B1'],
           ['A2', 'B2'],
           ['A3', 'B3', 'C3']]

注意:以下解决方案是根据需要从嵌套列表中删除重复项,但在删除重复项后不保留单个列表项中的顺序。

[list(set(sub_list)) for sub_list in list_1]

【问题讨论】:

  • using map():#Data:list_1 = [['A1', 'B1', 'A1'], ['A2', 'B2', 'B2'], ['A3', 'B3', 'C3']]#删除重复的列表元素:[*map(lambda x: [*sorted(set(x), key=x.index)], list_1)]
  • 来自骗子answer: l2 = [list(dict.fromkeys(inner)) for inner in list_1] 用于python 3.6+,其中字典键插入顺序保持

标签: python list list-comprehension nested-lists


【解决方案1】:
list_1 = [['A1', 'B1', 'A1'],
          ['A2', 'B2', 'B2'],
          ['A3', 'B3', 'C3']]

list2 = []
for l in list_1:
    tmp = []
    for i in l:
        if i not in tmp:
            tmp.append(i)

    list2.append(tmp)
print(list2)

【讨论】:

    【解决方案2】:

    如果迭代值等于 index() 方法的返回索引,您可以尝试检查内部列表的列表解析,该方法将仅打印重复项的第一项。

    list_op = [[y for inx, y in enumerate(i) if inx == i.index(y)] for i in list_1]
    print(list_op)
    

    输出

    [['A1', 'B1'], 
     ['A2', 'B2'], 
     ['A3', 'B3', 'C3']]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2018-02-18
      • 1970-01-01
      相关资源
      最近更新 更多