Я пытаюсь перевести строку кода Perl на Python, но у меня возникла проблема с методом sorted () Python. Python не имеет встроенной поддержки хеширования, как в Perl, поэтому я использовал autodict () для репликации хеш-поведения Perl. Ниже приведен фрагмент кода о том, как выполнялась сортировка.
Perl:
hash{one}{"index"} = 1
hash{one}{"value"} = "uno"
hash{two}{"index"} = 2
hash{two}{"value"} = "dos"
hash{three}{"index"} = 3
hash{three}{"value"} = "tres"
foreach my $ctg (sort hash{$a}{"index"} <=> hash{$b}{"index"}} keys %{ hash })
Python:
hash[one]["index"] = 1
hash[one]["value"] = "uno"
hash[two]["index"] = 2
hash[two]["value"] = "dos"
hash[three]["index"] = 3
hash[three]["value"] = "tres"
for ctg in sorted(hash):
Приведенный выше перевод был не совсем правильным. Версия Python сортирует на основе 1-го элемента в хеш-коде: один, два, три. Но версия Perl выполняет сортировку по "индексу"
def tree(): return collections.defaultdict(tree)
. - person user2357112 supports Monica   schedule 17.09.2013