识别列表中元素中的重复字符串模式,并为每个唯一的重复组创建 n 个新列表 - python



我有这样的列表:

[review_v001,
review_v002,
review_v003,
layerpack_review_v004,
layerpack_review_v001,
x_v001,
x_v002,
x_v003]

我需要将它们重新分组到按下划线之前的字符分组的新列表中,即 [:-5] 如下所示:

[review_v001,
review_v002,
review_v003]
[layerpack_review_v004,
layerpack_review_v001]
[x_v001,
x_v002,
x_v003]

因此,为了改写,我需要遍历给定的列表,确定列表中的哪些元素从字符串的开头到版本号之前具有相同的前缀(例如 _v001(,然后将这些元素重新组织到新列表中,其中分组基于此共享前缀。

这是我的尝试之一,它成功地识别并几乎对重复项进行了分组,只是在重新分组时它没有正确命名它们。

fullstringlst=
[review_v001,
review_v002,
review_v003,
layerpack_review_v004,
layerpack_review_v001,
x_v001,
x_v002,
x_v003]
prefixList = []
for s in fullstringlst:
p = s[:-5]
prefixList.append(p)
sublists = []
for item in set(prefixList):
sublists.append([p] * prefixList.count(item))
print sublists

你可以尝试这样的事情:

fullstringlst = ['review_v001', 'review_v002', 'review_v003', 'layerpack_review_v004', 'layerpack_review_v001', 'x_v001', 'x_v002', 'x_v003']
for s1 in fullstringlst:
similar_strs = []
for s2 in fullstringlst:
if s1[:-5] == s2[:-5]:
similar_strs.append(s2)
print(similar_strs)

最新更新