यहाँ समस्या का पता नहीं लग सकता है:

मैं एक सूची पारित कर रहा हूँ

vote_sort([("TOD",12),("Football",20),("Baseball",19),("Tennis",10)])

मुझे जो आउटपुट मिल रहा है

[('Baseball', 19), ('Football', 20), ('TOD', 12), ('Tennis', 10)]

वांछित आउटपुट:

[('Football', 20), ('Baseball', 19), ('TOD', 12), ('Tennis', 10)]

सहायता के लिए धन्यवाद!

def vote_sort(ls):
    firstIndex = -1
    for a, b in ls:
        # EXTRACT THE VOTES = b
        firstIndex += 1
        for index in range(firstIndex+1, len(ls)):
            # COMPARISON,SORT AND SWAP
            if ls[index][1] > b:
                temp = ls[index]
                ls[index] = ls[firstIndex]
                ls[firstIndex] = temp 
    print(ls)

vote_sort([("TOD",12),("Football",20),("Baseball",19),("Tennis",10)])
0
dbridgedev 17 मई 2020, 01:00

1 उत्तर

सबसे बढ़िया उत्तर
print(sorted(L, key=lambda k: k[1], reverse=True))

आउटपुट:

[('Football', 20), ('Baseball', 19), ('TOD', 12), ('Tennis', 10)]

संपादित करें:

आपने अपने कोड के बारे में पूछा: प्रमुख समस्या यह है कि आप बाहरी लूप का इलाज कैसे करते हैं। आंतरिक लूप में b अपनी स्थिति बदलता है, लेकिन आप इसके साथ तुलना करते रहते हैं। उदाहरण के लिए, दोनों लूपों के लिए पहले पुनरावृत्ति में b की स्थिति 0 है, firstIndex 0 है और अनुक्रमणिका 1 है। कल्पना कीजिए, आपने तब अदला-बदली की है, आंतरिक लूप के लिए अगले पुनरावृत्ति पर आप पाते हैं कि b स्थिति 1 पर है, firstIndex अभी भी 0, अनुक्रमणिका 2 है। फिर आप तत्वों 1 और 2 की तुलना करेंगे, लेकिन तत्वों 0 और 2 की अदला-बदली करेंगे। आपको बाहरी लूप में मान से नहीं, बल्कि अनुक्रमणिका द्वारा पुनरावृति करनी चाहिए। यदि आप अभी भी अपना खुद का सॉर्ट फ़ंक्शन लिखना पसंद करते हैं, तो मैं आपके कोड को आधार के रूप में लेने के लिए कुछ इस तरह का सुझाव दूंगा:

def vote_sort(ls):
    for i in range(len(ls)):
        for j in range(i+1, len(ls)):
            if ls[i][1] > ls[j][1]:
                tmp = ls[i]
                ls[i] = ls[j]
                ls[j] = tmp

    print(ls[::-1])
3
Yelyzaveta Velizhanina 17 मई 2020, 03:30