クイックソートについての質問です。Colaboratory python を使用しています。
10人の国語と数学の合計を高い順に表示するためにクイックソートを作成しました。
def partition(nums, beginning, ending): i = beginning - 1 pivot = nums[ending] for j in range(beginning, ending): if nums[j] <= pivot: i += 1 nums[i], nums[j] = nums[j], nums[i] nums[i + 1], nums[ending] = nums[ending], nums[i + 1] return i+1 def quick_sort(nums, beginning, ending): if beginning < ending: pivot_index = partition(nums, beginning, ending) quick_sort(nums, beginning, pivot_index - 1) quick_sort(nums, pivot_index + 1, ending) return nums
続いて今回並び替えたいlistです
SeisekiList = [ {"NAMAE":"A ","KOKUGO":80,"SUGAKU":95}, {"NAMAE":"B","KOKUGO":75,"SUGAKU":75}, {"NAMAE":"C","KOKUGO":40,"SUGAKU":80}, {"NAMAE":"D","KOKUGO":60,"SUGAKU":60}, {"NAMAE":"E","KOKUGO":80,"SUGAKU":90}, {"NAMAE":"F","KOKUGO":95,"SUGAKU":95}, {"NAMAE":"G","KOKUGO":90,"SUGAKU":80}, {"NAMAE":"H","KOKUGO":75,"SUGAKU":85}, {"NAMAE":"I","KOKUGO":40,"SUGAKU":45}, {"NAMAE":"J","KOKUGO":80,"SUGAKU":60} ]
続いて実行前と実行後での比較しながら出力しようとしたところ、エラーが発生してしましました
for ent in SeisekiList: ent["GOKEI"]=ent["KOKUGO"]+ ent["SUGAKU"] print("===Initial===") for ent in SeisekiList: print("{:10s} {:>3d} {:3d} {:>3d}".format(ent["NAMAE"],ent["KOKUGO"],ent["SUGAKU"],ent["GOKEI"])) quick_sort(SeisekiList,0, len(SeisekiList) - 1) print("===Sorted===") for ent in SeisekiList: print("{:10s} {:>3d} {:3d} {:>3d}".format(ent["NAMAE"],ent["KOKUGO"],ent["SUGAKU"],ent["GOKEI"]))
下記エラー内容です
TypeError Traceback (most recent call last) <ipython-input-10-d6677c2a86db> in <module>() 22 for ent in SeisekiList: 23 print("{:10s} {:>3d} {:3d} {:>3d}".format(ent["NAMAE"],ent["KOKUGO"],ent["SUGAKU"],ent["GOKEI"])) ---> 24 quick_sort(SeisekiList,0, len(SeisekiList) - 1) 25 print("===Sorted===") 26 for ent in SeisekiList: 1 frames <ipython-input-10-d6677c2a86db> in quick_sort(nums, beginning, ending) 11 def quick_sort(nums, beginning, ending): 12 if beginning < ending: ---> 13 pivot_index = partition(nums, beginning, ending) 14 quick_sort(nums, beginning, pivot_index - 1) 15 quick_sort(nums, pivot_index + 1, ending) <ipython-input-10-d6677c2a86db> in partition(nums, beginning, ending) 3 pivot = nums[ending] 4 for j in range(beginning, ending): ----> 5 if nums[j] <= pivot: 6 i += 1 7 nums[i], nums[j] = nums[j], nums[i] TypeError: '<=' not supported between instances of 'dict' and 'dict'
どの部分を変えればエラーが発生せずに動くようになりますか?