标签: natural-sort

如何进行自然分类?

R 有天然的排序吗?

说我有一个像这样的角色矢量:

seq.names <- c('abc21', 'abc2', 'abc1', 'abc01', 'abc4', 'abc201', '1b', '1a')
Run Code Online (Sandbox Code Playgroud)

我想以不合理的方式对其进行排序,所以我得到了回复:

c('1a', '1b', 'abc1', 'abc01', 'abc2', 'abc4', 'abc21', 'abc201')
Run Code Online (Sandbox Code Playgroud)

这存在于某处,还是应该开始编码?

sorting r natural-sort r-faq

21
推荐指数
2
解决办法
6976
查看次数

如何在c ++中实现自然排序算法?

我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.

例如,我想要:abc1def,...,abc9def,abc10def

而不是:abc10def,abc1def,...,abc9def

有谁知道这个算法(特别是在c ++中)

谢谢

c++ sorting natural-sort

17
推荐指数
3
解决办法
1万
查看次数

在C#中对List <String>进行排序

如何根据项的整数值对List进行排序

清单就像

"1"
"5"
"3"
"6"
"11"
"9"
"NUM1"
"NUM0"
Run Code Online (Sandbox Code Playgroud)

结果应该是这样的

"1"
"3"
"5"
"6"
"9"
"11"
"NUM0"
"NUM1"
Run Code Online (Sandbox Code Playgroud)

有什么想法使用LINQ或Lambda表达式吗?

提前致谢

c# natural-sort

16
推荐指数
2
解决办法
1万
查看次数

在MongoDB中按字母顺序排序文档(也称为自然排序顺序,为人类排序)

我想了解如何使用MongoDB执行此操作

我的文件名称为"file1","file2","file22","file11"(名称可以是任何内容,没有特定的模式)我运行查询以获取按名称排序的所有文档,结果不是预期.

> db.mydata.find().sort({"name":1});                                                                                                                          
{ "_id" : ObjectId("571e5a787e88d30b20b7857c"), "name" : "file1" }                                                                                            
{ "_id" : ObjectId("571e5a8c7e88d30b20b7857d"), "name" : "file11" }                                                                                           
{ "_id" : ObjectId("571e5a977e88d30b20b7857f"), "name" : "file2" }                                                                                            
{ "_id" : ObjectId("571e5a937e88d30b20b7857e"), "name" : "file22" } 
Run Code Online (Sandbox Code Playgroud)

预期的是(字母/自然顺序)

{ "_id" : ObjectId("571e5a787e88d30b20b7857c"), "name" : "file1" }                                                                                            
{ "_id" : ObjectId("571e5a977e88d30b20b7857f"), "name" : "file2" }                                                                                           
{ "_id" : ObjectId("571e5a8c7e88d30b20b7857d"), "name" : "file11" }
{ "_id" : ObjectId("571e5a937e88d30b20b7857e"), "name" : "file22" }
Run Code Online (Sandbox Code Playgroud)

根据我的发现,还有其他方法可以使用aggregate+ $project和排序$meta: "textScore",但到目前为止我还没有成功.

更新:此问题的应用程序:按名称对文件夹/文件进行排序 Windows资源管理器,按名称排序的文件夹

javascript natural-sort mongodb mongodb-query

15
推荐指数
1
解决办法
1039
查看次数

Django:自然排序查询集

我正在寻找一种对 Django 的 QuerySet 进行自然排序的方法。我发现了一个类似的问题,但它没有关注 QuerySets。相反,他们直接在 Python 中进行。

所以这是我的问题。假设我有这个模型:

class Item(models.Model):
    signature = models.CharField('Signatur', max_length=50)
Run Code Online (Sandbox Code Playgroud)

在 Django 管理界面中,我想使用一个过滤器,将它们按字母数字排序。目前,它们是这样排序的:

django admin 中的典型排序

我期望的是["BA 1", "BA 2", ...]. 我admin.SimpleListFilter官方文档中找到,听起来很合适。但是我在queryset()函数中得到的是一个QuerySet,它不能自然排序,因为它不包含元素,而只包含对数据库的查询。

order_byQuerySet 上的方法给出了与图像中看到的相同的排序。有没有办法操纵 QuerySet 使其自然排序?

到目前为止我的代码:

class AlphanumericSignatureFilter(admin.SimpleListFilter):
    title = 'Signature (alphanumeric)'
    parameter_name = 'signature_alphanumeric'

    def lookups(self, request, model_admin):
        return (
            ('signature', 'Signature (alphanumeric)'),
        )

    def queryset(self, request, queryset: QuerySet):
        return queryset.order_by('signature')
Run Code Online (Sandbox Code Playgroud)

如何转换 QuerySet 以获得我想要的输出?或者有不同的方法吗?Django Admin Interface 真的很强大,这就是为什么我想尽可能地使用它。但是这个功能真的少了。

我目前正在使用 Django 1.11

任何帮助、评论或提示表示赞赏。谢谢你的帮助。

python django natural-sort

15
推荐指数
2
解决办法
1662
查看次数

如何自然地对哈希键进行排序?

我有一个Perl哈希,其键以数字开头,或者是数字.

如果我用,

foreach my $key (sort keys %hash) {
    print $hash{$key} . "\n";
}
Run Code Online (Sandbox Code Playgroud)

列表可能会出现,

0
0001
1000
203
23
Run Code Online (Sandbox Code Playgroud)

代替

0
0001
23
203
1000
Run Code Online (Sandbox Code Playgroud)

sorting perl hash natural-sort

14
推荐指数
2
解决办法
4万
查看次数

如何按字母中的数字对字符串列表进行排序?

毫无疑问,这对你来说很简单......

我有一个类似的文件名列表;

fw_d.log.1.gz  
through  
fw_d.log.300.gz  
Run Code Online (Sandbox Code Playgroud)

当我使用下面的代码块时,它几乎按我想要的方式排序,但不完全.

#!/usr/bin/perl -w
my $basedir = "/var/log";
my @verdir = qw(fw_d);
my $fulldir;
my $configs;
my $combidir;

foreach $combidir (@verdir) {
    $fulldir = "$basedir/$combidir";
    opendir (DIR, $fulldir);
    my @files = grep { $_ ne '.' && $_ ne '..' && $_ ne 'CVS' readdir DIR;
    closedir (DIR);
    @files1 = sort {$a cmp $b}(@files);
    foreach my $configs (@files1) {
        print "Checking $configs\n";
        system("less $basedir/$combidir/$configs | grep \'.* Group = , Username = .* autheauthenticated.\' >> output.log" …
Run Code Online (Sandbox Code Playgroud)

sorting perl numbers natural-sort

14
推荐指数
3
解决办法
7346
查看次数

PostgreSQL ORDER BY问题 - 自然排序

ORDER BY在下表中遇到了Postgres 问题:

em_code  name
EM001    AAA
EM999    BBB
EM1000   CCC
Run Code Online (Sandbox Code Playgroud)

要向表中插入新记录,

  1. 我选择了最后一条记录 SELECT * FROM employees ORDER BY em_code DESC
  2. 从em_code中删除使用reg exp和存储的字母 ec_alpha
  3. 将重映射部分转换为整数 ec_num
  4. 增加一个 ec_num++
  5. 垫有足够zeors和前缀ec_alpha再次

em_code到达EM1000,上述算法失败.

第一步将返回EM999而不是EM1000,它将再次生成EM1000为新的em_code,打破了唯一键约束.

知道如何选择EM1000吗?

sql postgresql types natural-sort sql-order-by

14
推荐指数
5
解决办法
1万
查看次数

红宝石中的版本排序(使用alphas,beta等)

如何在Ruby中对版本列表进行排序?我见过关于自然排序的东西,但这是一个超越它的一步.

输入是一堆像这样的字符串:

input = ['10.0.0b12', '10.0.0b3', '10.0.0a2', '9.0.10', '9.0.3']
Run Code Online (Sandbox Code Playgroud)

我几乎可以用天然宝石做到这一点:

require 'naturally'
Naturally.sort(input)
=> ["9.0.3", "9.0.10", "10.0.0a2", "10.0.0b12", "10.0.0b3"]    
Run Code Online (Sandbox Code Playgroud)

问题:10.0.0b3在10.0.0b12之后排序; 10.0.0b3应该是第一个.

有人有办法吗?其他语言也很有帮助!

ruby sorting natural-sort version-sort

14
推荐指数
2
解决办法
1898
查看次数

如何比较MySQL中的版本字符串("xyz")?

我的表中有固件版本字符串(如"4.2.2"或"4.2.16")

我该如何比较,选择或排序?

我不能使用标准字符串比较:SQL看到"4.2.2"大于"4.2.16"

作为版本字符串,我希望4.2.16大于4.2.2

我想考虑固件版本中可能有chars:4.24a1,4.25b3 ...为此,通常,带字符的子字段具有固定长度.

如何进行 ?

python mysql sql django natural-sort

13
推荐指数
3
解决办法
7052
查看次数