我想在python中复制以下perl代码。目标是获得按多个散列/字典值排序的散列/字典键数组。示例perl代码:
my $hash = {
'item1'=> {'id'=>'a', 'pos'=>6},
'item2'=> {'id'=>'a', 'pos'=>7},
'item3'=> {'id'=>'b', 'pos'=>4},
'item4'=> {'id'=>'a', 'pos'=>5},
'item5'=> {'id'=>'b', 'pos'=>2},
};
my @keys = sort {
$hash->{$a}->{id} cmp $hash->{$b}->{id} ||
$hash->{$a}->{pos} <=> $hash->{$b}->{pos}
} keys %$hash;
print "@keys\n";
按词法排序id
,然后按pos
数字排序,因此预期结果为:
item4 item1 item2 item5 item3
答案 0 :(得分:1)
使用sorted
:
[k for k, v in sorted(hash.items(), key=lambda item: (item[1].id, item[1].pos))]
答案 1 :(得分:0)
from operator import attrgetter
sorted(hash, key=lambda k:attrgetter('id', 'pos')(hash[k]))