相关疑难解决方法(0)

按值Hash of Hashes Perl排序

假设我有哈希数据结构的哈希构造如下:

%HoH => (
     flintstones => {
               family_members    => "fred;wilma;pebbles;dino",
               number_of_members => 4,
     },
     jetsons => {
               family_members    => "george;jane;elroy",
               number_of_members => 3,
     },
     simpsons => {
               family_members    => "homer;marge;bart;lisa;maggie",
               number_of_members => 5,
     },

)
Run Code Online (Sandbox Code Playgroud)

如何根据number_of_members从最大到最小的值对键(本例中的族)进行排序?然后我想打印出最高的两个.这是一个大致的想法,但我知道这是错的:

foreach $value (
    sort {
    $HoH{$a}{$number_of_members} cmp $HoH{$b}{$number_of_members}
    } keys %HoH)
my $count = 0;
while ($key, $value) = each %HoH) {
    if (count <= 2){
        print "${HoH}{$key}\t$key{$value}";
    }
}
continue {
    $count++;
};
Run Code Online (Sandbox Code Playgroud)

我想要打印代码(空格是制表符分隔):

simpsons    homer;marge;bart;lisa;maggie
flintstones    fred;wilma;pebbles;dino
Run Code Online (Sandbox Code Playgroud)

sorting perl hash-of-hashes

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

使用多个条件对嵌套哈希进行排序

我对 perl 编程有点陌生,我有一个可以这样表述的散列:

$hash{"snake"}{ACB2}   = [70, 120];
$hash{"snake"}{SGJK}   = [183, 120];
$hash{"snake"}{KDMFS}   = [1213, 120];
$hash{"snake"}{VCS2}   = [21, 120];
...
$hash{"bear"}{ACB2}   = [12, 87];
$hash{"bear"}{GASF}   = [131, 87];
$hash{"bear"}{SDVS}   = [53, 87];
...
$hash{"monkey"}{ACB2}   = [70, 230];
$hash{"monkey"}{GMSD}   = [234, 230];
$hash{"monkey"}{GJAS}   = [521, 230];
$hash{"monkey"}{ASDA}   = [134, 230];
$hash{"monkey"}{ASMD}   = [700, 230];
Run Code Online (Sandbox Code Playgroud)

哈希的结构总结如下:

%hash{Organism}{ProteinID}=(protein_length, total_of_proteins_in_that_organism)
Run Code Online (Sandbox Code Playgroud)

我想根据某些条件对这个哈希进行排序。首先,我只想考虑那些蛋白质总数大于100的生物,然后我想显示生物的名称以及最大的蛋白质及其长度。

为此,我将采用以下方法:

    foreach my $org (sort keys %hash) {
        foreach my $prot (keys %{ $hash{$org} }) {
            if ($hash{$org}{$prot}[1] > 100) {
                @sortedarray = …
Run Code Online (Sandbox Code Playgroud)

perl hash multidimensional-array protein-database perl-hash

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