相关疑难解决方法(0)

在Python中将项插入到不区分大小写的排序列表中

我有一个字符串列表已经按不区分大小写的顺序排序.我想在列表中插入一个新字符串.一种方法是附加项目,然后对列表进行排序,如下所示:

myList.append('Something')
myList.sort(key=lambda s: s.lower())
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有办法将项目插入正确的位置而不再重新整理整个事物.

我发现了这个问题:在Python中将项目插入到排序列表中.它指向Python的 bisect模块.但该模块看起来不像是支持不区分大小写.


编辑:我测试了这里列出的几个答案.

  • 将项目追加到最后并对整个列表进行排序(如原始问题中所提出的)是最慢的.
  • Moinuddin Quadri的答案比排序整个列表更快,但由于lower()列表上的每个项目都运行,它仍然很慢.
  • Stefan Pochmann的答案比整个列表排序快了一个数量级.
  • Jared Goguen的回答是重复插入的最快速度.但是,第一次,它运行lower()在每个元素上.

这是一个接听答案的接近电话.最后,我选择了Stefan Pochmann的答案,因为它是一次性插入的最佳选择,访问结果列表不需要访问成员变量.但是,用例会有所不同,因此请务必检查所有答案.

python sorting case-insensitive python-2.7

6
推荐指数
1
解决办法
992
查看次数

标签 统计

case-insensitive ×1

python ×1

python-2.7 ×1

sorting ×1