python - 在仅大小写不同的字符串列表中查找重复项
问题描述
我有一个字符串列表,其中包含“文字重复”和“伪重复”,它们仅在小写和大写方面有所不同。我正在寻找一个函数,它将所有文字重复项视为一组,返回它们的索引,并找到这些元素的所有伪重复项,再次返回它们的索引。
这是一个示例列表:
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'
。
解决方案
这是一种解决方案(您没有阐明列表项的逻辑是什么,我认为您希望这些项目采用较低格式,因为它们在列表中从左到右满足,如果它必须不同,请告诉我) :
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]]]
推荐阅读
- android - 我想更改启动器 Activity 而不会崩溃我的应用程序并在主屏幕上保留我的应用程序的快捷方式
- flutter - 没有构造函数“文本”。具有在类“文本”中声明的匹配参数
- python - 从 requirements.txt 安装 Torch 时出现内存错误
- textures - Qt3d 透明纹理将被覆盖。如何解决这个问题?
- flask - 是否可以在 API 不公开的情况下将数据从客户端发送到服务器?
- azure - 哪个外部 AMQP 客户端库用于 IoT 中心集成?
- ios - 为什么标签栏项目只显示没有图标的标题?
- kubernetes - 台风 Kubernetes 错误:module.tempest.null_resource.bootstrap:仍在创建... [22m0s 已过]
- angular - Angular 7 - 尝试构建时出现 angular-ng-autocomplete 问题
- jenkins - 如何在詹金斯管道的阶段之间共享文件?