वहाँ एक itemgetter विकल्प है कि नेस्टेड टपल मूल्य अर्क लिखने की तुलना में एक नेस्टेड टपल मूल्यों से एक सूची सॉर्ट करने के लिए एक बेहतर तरीका है:क्रमबद्ध सूची को महत्व देता
def deep_get(*idx):
def g(t):
for i in idx: t = t[i]
return t
return g
>>> l = [((2,1), 1),((1,3), 1),((3,6), 1),((4,5), 2)]
>>> sorted(l, key=deep_get(0,0))
[((1, 3), 1), ((2, 1), 1), ((3, 6), 1), ((4, 5), 2)]
>>> sorted(l, key=deep_get(0,1))
[((2, 1), 1), ((1, 3), 1), ((4, 5), 2), ((3, 6), 1)]
मैं रचना का उपयोग कर के बारे में सोचा है, लेकिन यह है नहीं मानक पुस्तकालय में:
sorted(l, key=compose(itemgetter(1), itemgetter(0))
वहाँ कुछ मैं libs में याद किया है कि इस कोड अच्छे होगा है?
कार्यान्वयन 100k वस्तुओं के साथ उचित रूप से काम करना चाहिए।
संदर्भ: मैं हिस्टोग्राम वाले आइटमों का एक शब्दकोश सॉर्ट करना चाहता हूं। चाबियां एक tuples (ए, बी) हैं और मान गिनती है। अंत में वस्तुओं को अवरोही, ए और बी द्वारा क्रमबद्ध किया जाना चाहिए। एक विकल्प है ट्यूपल को फ़्लैट करना और आइटमजटर का सीधे उपयोग करना है, लेकिन इस तरह बहुत सारे ट्यूपल उत्पन्न किए जाएंगे।
नहीं है कोई भी जिसे मैं जानता हूं। आपका दृष्टिकोण अच्छा है क्योंकि यह आईएमएचओ है। –
"कार्यान्वयन 100k वस्तुओं के साथ उचित रूप से काम करना चाहिए।" - यह लाइन अनावश्यक है; 'सॉर्ट' का उपयोग करने वाले सभी कार्यान्वयन 100k आइटम – ninjagecko
@ninjagecko के साथ उचित रूप से काम करेंगे यदि आप 3 आइटम या 100k या 1T सॉर्ट करते हैं तो कार्यान्वयन अलग होगा। –