次の形式の文字列を含む非常に長い 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 メソッドを使用してアイテム インデックスに適用するが、サブリスト全体を再配置するようなものを書くことは可能ですか?