openoffice中的排序算法

2024-10-01 00:15:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我今天过得真的很长,最高潮是一个愚蠢的时刻试图整理一个字符串列表。Calc将它们分类如下:

0DCv6UlY6T0
0ITZEBZrwMk
1062VEX2EfI
2jk7hilGMs0
2lZVu3haI6A
3f8s3KbFQ0Q
3hB09daYLmk
43Erj3qFxxo
6lj33w3YoOw
7jiNQnkfx0k
7TSMj6g3UoE
7Wba8IUk6v8
9hbG9dS7zl0
ALThJiGFBSc
by_VzOiPhZM
Ce250P1xep0
Cgx6DV6RJg8
d5dDgLRd1-o
DnyzZwaYDXE
dO5KLh2er4E

这不是我所期望的。看看最后3个值。以大写字母D开头的条目不应该在以小写字母D开头的条目之前(或者反过来)?为什么它出现在小写d条目之间?在

有趣的是,Linux中的命令行sort也以同样的方式进行操作。有人能解释一下这种分类背后的逻辑吗?我需要复制它(或者在Python中复制它,如果它已经在某处实现的话)。在


Tags: 字符串列表by分类calc条目整理时刻
3条回答

对于复制:

   data = [  "abc", "aBB", "abD", "Aac", "AAb", "ABc", "ABa" ]
   print sorted(data, key = lambda item: item.upper())

诀窍是提供key参数。此函数应用于列表项,结果用于排序期间的比较。在

大写字母与小写字母在词典上是否有区别取决于语言环境(特别是LCˉCOLLATE),它解释了命令行排序程序(以及ls和…),而且可能还有Openoffice。在

例如


$ cat test 
Abc
aabc
$ sort test 
aabc
Abc
$ LC_COLLATE=C sort test 
Abc
aabc

这是因为当地的环境。看看这两者之间的区别:

sort inputfile

以及(你可能想要的):

^{pr2}$

第二个命令的输出:

0DCv6UlY6T0
0ITZEBZrwMk
1062VEX2EfI
2jk7hilGMs0
2lZVu3haI6A
3f8s3KbFQ0Q
3hB09daYLmk
43Erj3qFxxo
6lj33w3YoOw
7TSMj6g3UoE
7Wba8IUk6v8
7jiNQnkfx0k
9hbG9dS7zl0
ALThJiGFBSc
Ce250P1xep0
Cgx6DV6RJg8
DnyzZwaYDXE
by_VzOiPhZM
d5dDgLRd1-o
dO5KLh2er4E

相关问题 更多 >