I einen Hash haben wie folgt:Sortieren einer Hash von Hash-Schlüssel von der zweiten Ebenen in Perl
'4' => {
'25' => 'X',
'24' => 'Y',
'23' => 'Z'
},
'3' => {
'22' => 'S',
'15' => 'T'
},
'2' => {
'11' => 'A',
'21' => 'B',
'9' => 'C',
'17' => 'D',
'12' => 'E',
'20' => 'F',
'14' => 'G',
'4' => 'H',
'18' => 'I',
'19' => 'J',
'16' => 'K',
'10' => 'L',
'13' => 'M'
}
I zunächst auf der Grundlage der Primärschlüssel oder den ersten Schlüssel sortiert werden sollen, die 2,3,4 ist . Dann gilt für jeden der Schlüssel, sagen für 4, I für Sekundärschlüssel sortiert werden soll, so wird die erwartete Ausgabe sein:
'4' => {
'23' => 'Z',
'24' => 'Y',
'25' => 'X'
},
'3' => {
'15' => 'T',
'22' => 'S'
},
'2' => {
'4' => 'H',
'9' => 'C',
'10' => 'L',
'11' => 'A',
'12' => 'E',
'13' => 'M',
'14' => 'G',
'16' => 'K',
'17' => 'D',
'18' => 'I',
'19' => 'J',
'20' => 'F',
'21' => 'B'
}
Ich habe versucht, diesen Code, aber die Sekundärschlüssel sind nicht sortiert bekommen:
foreach $parentKey (sort {$a <=> $b} keys %orderedChoiceNameHash) {
for $childKey (sort {$orderedChoiceNameHash{$a} <=> $orderedChoiceNameHash{$b}} keys %{ $orderedChoiceNameHash{$parentKey}}) {
print $fh "$parentKey ::::: $childKey ::::: $orderedChoiceNameHash{$parentKey}{$childKey}\n";
}
}
Willkommen bei stackoverflow. Können Sie uns bitte zeigen, was Sie versucht haben, Ihren Code? Hier werden normalerweise Fragen zu bestimmten Problemen mit ihrem Code gestellt. Es ist kein Ort, an dem man einfach Code für sie schreiben möchte. – zdim
foreach $ parentKey (sort {a $ <=> $ b} keys% orderedChoiceNameHash) { \t für $ childKey (sort {$ orderedChoiceNameHash {$ a} <=> $ orderedChoiceNameHash {$ b}} keys% {$ orderedChoiceNameHash {$ parentKey}}) { \t \t print $ fh "$ parentKey ::::: $ childKey ::::: $ orderedChoiceNameHash {$ parentKey} {$ childKey} \ n"; \t} } –
Das obige ist der Code, den ich ausprobiert habe. Aber die sekundären Schlüssel werden nicht sortiert. –