dupes
是在列表中找到的重复项的列表。
clipb
是原始列表
我现在在clipb
中搜索dupes
的部分字符串。
一天结束时的目标是在发现的每个重复项的原始列表中添加单词"duplicate"
dupes = ['0138', '0243']
clipb = ['ABC2b_0243D_K6_LOPA-PAST', 'ABC2b_0016G_M1_LOPA-PABR', 'ABC2b_0138H_M1_LOBR-BRMU', 'ABC2b_0138G_J1_LOPA-PAST', 'ABC2b_0243A_O§_STMA-MACV']
def Filter(clipb, dupes):
return [str for str in clipb if
any(sub in str for sub in dupes)]
#index = clipb.index(clipb) <<--- no idea how to add it in here
rs_found = (Filter(clipb, dupes))
print ("found dupicates from the original list are: ","\n", rs_found)
当前输出只是找到的重复项列表。 从原始列表中找到的重复项包括:
['ABC2b_0243D_K6_LOPA-PAST', 'ABC2b_0138H_M1_LOBR-BRMU', 'ABC2b_0138G_J1_LOPA-PAST', 'ABC2b_0243A_O§_STMA-MACV']
我的问题是,我不知道如何格式化Filter
以包括输出找到的重复项的索引,这样我就可以实际更改项目
不只是过滤掉重复项,因为您希望重复项附加一个
tab
和“duplicate”,只要在找到重复项时执行此操作,而不是过滤掉它:请注意,您不需要预先创建重复标记的列表-这在代码中完成;模糊地改编自https://docs.python.org/3/library/itertools.html的
unique_everseen
配方你现在的方向很好。这里根本不需要索引!您正在使用
any(sub in str for sub in dupes)
来检查字符串中是否有任何重复的模式是正确的。您只需要一个小的逻辑细化当上述条件为真时,会发生什么情况?您想添加
"duplicate"
字符串。如果不是真的会发生什么?按原样添加原始字符串。因此,只需将列表修改为:*注意,我更改了
str
变量的名称,因为str
是内置类型的名称。样本数据的输出为:
如果要将原始列表更改到位,可以使用内置的^{} 函数迭代索引和项:
相关问题 更多 >
编程相关推荐