Search code examples
pythonarraysrecord

I currently have 9 arrays in python which i am bubblesorting separately depending on the score. how can I make it smaller? (using a record of arrays)


my current code is below, any help is appreciated. This currently works well but it does the job in so many lines of code. there is currently 9 arrays and I would like them to just be a record of arrays. I do not know how to go about doing this. Please post examples of going about this.

placement = [1, 2 ,3 ,4 ,5]
grade = ["a", "c", "e", "d", "b"]
score = [50, 20, 13, 21, 31]
music = ["song1", "song2", "song3", "song4", "song5"]
maxcombo = [1, 2 ,3 ,4 ,5]
perfect = [1, 2 ,3 ,4 ,5]
great = [1, 2 ,3 ,4 ,5]
good = [1, 2 ,3 ,4 ,5]
miss = [1, 2 ,3 ,4 ,5]

for passnum in range(len(score)-1,0,-1):
    for i in range(passnum):
        if score[i]<score[i+1]:
            TemporaryScore = score[i] #stores score
            TemporaryGrade = grade[i] #stores grade
            TemporaryMusic = music[i] #stores music
            Temporarymaxcombo = maxcombo[i] #stores maxcombo
            Temporaryperfect = perfect[i] #stores perfect
            Temporarygreat = great[i] #stores great
            Temporarygood = good[i] #stores good
            Temporarymiss = miss[i] #stores miss
            score[i] = score[i+1] #swaps the score
            grade[i] = grade[i+1] #swaps grade
            music[i] = music[i+1] #swaps music
            maxcombo[i] = maxcombo[i+1] #swaps maxcombo
            perfect[i] = perfect[i+1] #swaps perfect
            great[i] = perfect[i+1] #swaps perfect
            good[i] = good[i+1] #swaps good
            miss[i] = miss[i+1] #swaps miss
            score[i+1] = TemporaryScore #stores score
            grade[i+1] = TemporaryGrade #stores grade
            music[i+1] = TemporaryMusic #stores music
            maxcombo[i+1] = Temporarymaxcombo #stores maxcombo
            perfect[i+1] = Temporaryperfect #stores perfect
            great[i+1] = Temporarygreat #stores great
            good[i+1] = Temporarygood #stores good
            miss[i+1] = Temporarymiss #stores miss

Solution

  • Good data structure allows you to collapse the necessary code to almost nothing, see this simplified example:

    import operator
    
    data = [
        {"grade": "c", "score": 20},
        {"grade": "e", "score": 13},
        {"grade": "a", "score": 50},
    ]
    
    print sorted(data, key=operator.itemgetter("score"), reverse=True)