/ / मूल पर्ल हैश कुंजी द्वारा, मूल्य के अनुसार सॉर्टिंग, लेकिन कुंजी और मूल्य - perl, सॉर्टिंग, हैश द्वारा भी

कुंजी द्वारा मूल्य के आधार पर मूल पर्ल हैश सॉर्टिंग, लेकिन कुंजी और मूल्य - perl, सॉर्टिंग, हैश द्वारा भी

ठीक है, मेरे पास एक पर्ल प्रोग्राम है जो मैं लिख रहा हूंमेरे द्वारा एकत्र किए गए मानों का एक हैश (पूरी तरह से एक अलग कार्यक्रम में) और इस पर्ल स्क्रिप्ट को खिलाया है। यह हैश एक हैश (स्ट्रिंग, स्ट्रिंग) है।

मैं मूल्यों को 3 तरीकों से सॉर्ट करना चाहता हूं: सबसे पहले, मैं कुंजी से सॉर्ट करना चाहता हूं। मैंने सोचा कि यह आसान है, आप इसे ठीक तरह से करते हैं, पर्ल के सॉर्ट फ़ंक्शन में निर्मित, चाबियों पर लूपिंग, और प्रिंटिंग / स्टोरेज / सॉर्ट किए जाने वाले प्रत्येक के साथ जो भी हो।

foreach my $name (sort keys %planets) {
printf "%-8s %sn", $name, $planets{$name};
}

दूसरा, मैं मूल्य से क्रमबद्ध करना चाहता हूं। फिर, यह आसान है, सॉर्ट फ़ंक्शन और लूप का उपयोग करें:

foreach my $name (sort { $planets{$a} <=> $planets{$b} } keys %planets) {
printf "%-8s %sn", $name, $planets{$name};
}

तीसरा, मेरा प्रश्न है, मैं मूल्य से कैसे क्रमबद्ध हूं, लेकिन किसी के लिए संबंधों दो चाबियों के बीच मूल्यों में, मैं पहले उस मूल्य को सॉर्ट करता हूं जिसमें अधिक असीमित कुंजी है। उदाहरण:

Red => 50
Yellow => 75
Blue => 75

is sorted to this, since "Yellow" is greater asciibetically than "Blue"
Red 50
Blue 75
Yellow 75

उत्तर:

उत्तर № 1 के लिए 10

एक टाई पर, तुलना ऑपरेटर 0 वापस आ जाएंगे, ताकि आप कई तुलनाओं को श्रृंखलाबद्ध कर सकें ||:

 sort { $planets{$a} <=> $planets{$b} || $a cmp $b }