1

我希望在 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
4

2 回答 2

1

Using sorted:

[k for k, v in sorted(hash.items(), key=lambda item: (item[1].id, item[1].pos))]
于 2012-12-03T11:45:49.190 回答
0
from operator import attrgetter
sorted(hash, key=lambda k:attrgetter('id', 'pos')(hash[k]))
于 2012-12-03T12:11:17.990 回答