对字符串列表进行排序,忽略 ASCII 序数值

发布于 2024-12-22 01:39:37 字数 479 浏览 2 评论 0原文

我想对此列表进行排序:

>>> L = ['A', 'B', 'C', ... 'Z', 'AA', 'AB', 'AC', ... 'AZ', 'BA' ...]

无论内容如何,​​都按照原样排序(假设全部大写字母)。

>>> L.sort()
>>> L
['A', 'AA', 'AB', 'AC'...]

我该怎么做:

>>> L.parkinglot_sort()
>>> L
['A', 'B', 'C', ... ]

我正在考虑测试长度,对每个长度进行排序,然后将 L 的所有单独的 1 长度、2 长度、n 长度元素混合到新的 L。

谢谢!

I want to sort this list:

>>> L = ['A', 'B', 'C', ... 'Z', 'AA', 'AB', 'AC', ... 'AZ', 'BA' ...]

Exactly the way it is, regardless of the contents (assuming all CAPS alpha).

>>> L.sort()
>>> L
['A', 'AA', 'AB', 'AC'...]

How can I make this:

>>> L.parkinglot_sort()
>>> L
['A', 'B', 'C', ... ]

I was thinking of testing for length, and sorting each length, and mashing all the separate 1-length, 2-length, n-length elements of L into the new L.

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

十年九夏 2024-12-29 01:39:37

这又如何呢?

l.sort(key=lambda element: (len(element), element))

它不仅会考虑每个元素,还会考虑其长度对列表进行排序。

>>> l = ['A', 'AA', 'B', 'BB', 'C', 'CC']
>>> l.sort(key=lambda element: (len(element), element))
>>> print l
['A', 'B', 'C', 'AA', 'BB', 'CC']

What about this?

l.sort(key=lambda element: (len(element), element))

It will sort the list taking into account not only each element, but also its length.

>>> l = ['A', 'AA', 'B', 'BB', 'C', 'CC']
>>> l.sort(key=lambda element: (len(element), element))
>>> print l
['A', 'B', 'C', 'AA', 'BB', 'CC']
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文