首页 > 解决方案 > 在仅大小写不同的字符串列表中查找重复项

问题描述

我有一个字符串列表,其中包含“文字重复”“伪重复”,它们仅在小写和大写方面有所不同。我正在寻找一个函数,它将所有文字重复项视为一组,返回它们的索引,并找到这些元素的所有伪重复项,再次返回它们的索引。

这是一个示例列表:

a = ['bar','bar','foo','Bar','Foo','Foo']

这是我正在寻找的输出(列表列表):

dupe_list = [[[0,1],[3]],[[2],[4,5]]]

解释:'bar'在索引 0 和 1 出现两次,在索引 3 有一个伪重复'Bar'。在索引'foo'2 出现一次,在索引 4 和 5 有两个伪重复'Foo'

标签: pythonlistduplicates

解决方案


这是一种解决方案(您没有阐明列表项的逻辑是什么,我认为您希望这些项目采用较低格式,因为它们在列表中从左到右满足,如果它必须不同,请告诉我) :

d={i:[[], []] for i in set(k.lower() for k in a)}

for i in range(len(a)):
    if a[i] in d.keys():
        d[a[i]][0].append(i)
    else:
        d[a[i].lower()][1].append(i)

result=list(d.values())

输出:

>>> print(result)

[[[0, 1], [3]], [[2], [4, 5]]]

推荐阅读