【问题标题】:removing duplicates by comparing substrings in a list [duplicate]通过比较列表中的子字符串来删除重复项 [重复]
【发布时间】:2020-03-16 13:50:02
【问题描述】:

我有一个列表 l = ['AAB', 'CAA', 'ADA'] 。我想得到以下列表,没有重复字符new_l = ['AB','CA','AD']。我正在尝试在嵌套循环上进行迭代,但我不确定这是实现此目的的最佳方式。这是我的尝试:

new_l = []

for i in range(0,len(l)-1):
    for j in range(0,len(l)-1):
        if l[i][j] != l[i+1][j+1]:
            new_l = ..............

有人可以帮助我了解如何通过遍历此字符串列表的每个元素来获取集合吗?

【问题讨论】:

    标签: python list substring


    【解决方案1】:

    你可以很容易地做到这一点,因为字符串也是一个列表。

    strl = ['AAB', 'CAA', 'ADA']
    new_strl = []
    for s in strl:
      new_strl.append("".join(set(s)))
    
    print(new_strl)
    

    【讨论】:

      【解决方案2】:

      Set 会弄乱字符的顺序。更好地使用 OrderedDict:

      from collections import OrderedDict
      strl = ['AAB', 'CAA', 'ADA']
      result = ["".join(OrderedDict.fromkeys(s)) for s in strl]
      

      【讨论】:

      • 注意:在python3.7或更高版本中,键的顺序保留在字典中。
      • @Zaven Zareyan 你能解释一下你的代码,因为.fromkeys 创建一个新的有序字典,其中的键来自可迭代,值设置为值。我不明白.fromkeys 如何制作setstrl
      • 您通过 "" 字符(即无任何内容)加入 OrderedDict 的键(join 方法仅适用于键)从键(即{'key1': None, 'key2': None})创建。
      • 抱歉还是不明白为什么空字符加入会删除重复项
      • OrderedDict 使您的字符串类似于:'AAB'-> {'A': None, 'B': None} 并删除重复项。然后你加入钥匙并得到'AB'
      【解决方案3】:
      l = ['AAB', 'CAA', 'ADA']
      new_l = [''.join(sorted(set(x))) for x in l]
      #op
      ['AB', 'AC', 'AD']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-06
        • 1970-01-01
        • 2019-10-31
        • 1970-01-01
        • 1970-01-01
        • 2014-12-16
        • 1970-01-01
        • 2013-08-20
        相关资源
        最近更新 更多