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)
这存在于某处,还是应该开始编码?
我正在排序由文本和数字组成的字符串.我希望排序将数字部分排序为数字,而不是字母数字.
例如,我想要:abc1def,...,abc9def,abc10def
而不是:abc10def,abc1def,...,abc9def
有谁知道这个算法(特别是在c ++中)
谢谢
如何根据项的整数值对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表达式吗?
提前致谢
我想了解如何使用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",但到目前为止我还没有成功.
我正在寻找一种对 Django 的 QuerySet 进行自然排序的方法。我发现了一个类似的问题,但它没有关注 QuerySets。相反,他们直接在 Python 中进行。
所以这是我的问题。假设我有这个模型:
class Item(models.Model):
signature = models.CharField('Signatur', max_length=50)
Run Code Online (Sandbox Code Playgroud)
在 Django 管理界面中,我想使用一个过滤器,将它们按字母数字排序。目前,它们是这样排序的:
我期望的是["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
任何帮助、评论或提示表示赞赏。谢谢你的帮助。
我有一个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) 毫无疑问,这对你来说很简单......
我有一个类似的文件名列表;
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) 我ORDER BY在下表中遇到了Postgres 问题:
em_code name
EM001 AAA
EM999 BBB
EM1000 CCC
Run Code Online (Sandbox Code Playgroud)
要向表中插入新记录,
SELECT * FROM employees ORDER BY em_code DESCec_alphaec_numec_num++ec_alpha再次当em_code到达EM1000,上述算法失败.
第一步将返回EM999而不是EM1000,它将再次生成EM1000为新的em_code,打破了唯一键约束.
知道如何选择EM1000吗?
如何在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应该是第一个.
有人有办法吗?其他语言也很有帮助!
我的表中有固件版本字符串(如"4.2.2"或"4.2.16")
我该如何比较,选择或排序?
我不能使用标准字符串比较:SQL看到"4.2.2"大于"4.2.16"
作为版本字符串,我希望4.2.16大于4.2.2
我想考虑固件版本中可能有chars:4.24a1,4.25b3 ...为此,通常,带字符的子字段具有固定长度.
如何进行 ?
natural-sort ×10
sorting ×5
django ×2
perl ×2
python ×2
sql ×2
c# ×1
c++ ×1
hash ×1
javascript ×1
mongodb ×1
mysql ×1
numbers ×1
postgresql ×1
r ×1
r-faq ×1
ruby ×1
sql-order-by ×1
types ×1
version-sort ×1