मेरे पास तानाशाही की एक सूची है, ताना कुंजियाँ टुपल्स हैं जैसे: (0,5)

मैं सूची को टुपल्स [1] के मान से क्रमबद्ध करना चाहता हूं।

मैं विधि की सूची प्रकार के मुख्य तर्क के साथ प्रयास करता हूं लेकिन मुझे नहीं पता कि लैम्ब्डा में क्या रखा जाए, मैं इसे आजमाता हूं: key= lambda k[[1]]

नमूना इनपुट: [{(5,9): "item"}, {(0,4): "item"}]

अपेक्षित: [{(0,4): "item"}, {(5,9): "item"}]

कोई मुझे समझा सकता है कि यह कैसे काम करता है?

1
mg175430 29 मार्च 2018, 18:08

2 जवाब

सबसे बढ़िया उत्तर

यदि आपके पास ऐसा कुछ है तो यहां समाधान है:

a = [{(0,7): 1},
     {(1,5): 2},
     {(4,6): 3}]

sorted(a, key=lambda x: list(x.keys())[0][1])
#[{(1, 5): 2}, {(4, 6): 3}, {(0, 7): 1}]
3
zipa 29 मार्च 2018, 15:18

शब्दकोशों की सूची के लिए, आप इसका उपयोग कर सकते हैं:

lst = [{(5,9): "item"}, {(0,4): "item"}]

res = sorted(lst, key=lambda x: next(iter(x))[1])

[{(0, 4): 'item'}, {(5, 9): 'item'}]

शब्द next(iter(x)) डिक्शनरी की कुंजियों को एक पुनरावर्तक में बदल देता है और फिर पहले आइटम को कॉल करता है। यह काम करता है क्योंकि प्रत्येक शब्दकोश में केवल एक कुंजी होती है।

ध्यान दें, जैसा कि @juanpa.arrivillaga बताते हैं, शब्दकोश की कुंजियों को दोहराते समय x.keys() का उपयोग करने की कोई आवश्यकता नहीं है, iter(x) पर्याप्त है।

3
jpp 29 मार्च 2018, 16:43