1

次の形式の文字列を含む非常に長い 2d リストがあります

[[Month, Item, Price],[Month, Item, Price],.......]]

私がアルファベット順にした偽の短いバージョンの二次元リストは

msl =[['March', 'cook', '4.53'], ['March', 'book', '3.23'], ['June', 'clothes', '1.52'], ['December', 'clothes', '3.42']]

私がやろうとしているのは、辞書やラムダを使用せずにコードを記述して、アイテムをアルファベット順にソートすることです。たとえば、代わりに、[['March','cook','4.53'],['March','book','3.23'][['March','book','3.23'],['March','cook','4.53']...]]が書いたコードが機能していないようで、その理由がわかりません。私は次のように書いた

if msl[h][0] == msl[h+1][0] : # If month is the same as next month
    print "true"
    size = len( msl )         # start an item dictionary sort(msl[i][1])
    unsorted = True
    while unsorted :
        unsorted = False
        i = 0
        while i < size-1 :
            if msl[i][1] > d[i+1][1] : #if the item is greater than the next
                print "true again"
                temp = d[i]            # temp = current sublist
                d[i] = d[i+1]          # current sublist becomes next sublist
                d[i+1] = temp          # next sublist becomes current sublist
                unsorted = True
                i = i + 1

else :
    h= h+1

そこに「trues」を書き込んで、プログラムのプロセスがどこにあるかを確認し、それらすべてにtrueを出力しますが、新しいmslを出力しようとすると何も表示されません。while month remains the same, sort items.sort メソッドを使用してアイテム インデックスに適用するが、サブリスト全体を再配置するようなものを書くことは可能ですか?

4

1 に答える 1