初投稿失礼します。pythonについての質問です。Colaboratoryを使用しています。
クイックソートを作成し、体力テストの得点に関する一部を辞書のlistを並べ替えるものを作成しています。下記リスト5回分の結果になります。
Seiseki = [ {"NAME":"Horikita ","握力":6,"50m":8}, {"NAME":"Ayanokoji","握力":7,"50m":7}, {"NAME":"Kushida ","握力":9,"50m":8}, {"NAME":"Sakura ","握力":6,"50m":6}, {"NAME":"Yukimura ","握力":8,"50m":9} ]
下記、クイックソートになります。
def partition(Seiseki, start, end): i = start - 1 pivot = Seiseki[end]["total"] for j in range(start, end): if Seiseki[j]["total"] >= pivot: i += 1 Seiseki[i]["total"], Seiseki[j]["total"] = Seiseki[j]["total"], Seiseki[i]["total"] Seiseki[i + 1], Seiseki[end] = Seiseki[end], Seiseki[i + 1] return i+1 def Quicksort(Seiseki, start, end): if start < end: pivot_index = partition(Seiseki, start, end) Quicksort(Seiseki, start, pivot_index - 1) Quicksort(Seiseki, pivot_index + 1, end) return Seiseki for ent in Seiseki: ent["total"]=ent["握力"]+ ent["50m"] print("======") for ent in Seiseki: print("{:10s} {:>3d} {:3d} {:>3d}".format(ent["NAME"],ent["握力"],ent["50m"],ent["total"])) Quicksort(Seiseki,0, len(Seiseki) - 1) print("===Sorted===") for ent in Seiseki: print("{:10s} {:>3d} {:3d} {:>3d}".format(ent["NAME"],ent["握力"],ent["50m"],ent["total"]))
結果は下記になります。
====== Horikita 6 8 14 Ayanokoji 7 7 14 Kushida 9 8 17 Sakura 6 6 12 Yukimura 8 9 17 ===Sorted=== Horikita 6 8 17 Yukimura 8 9 17 Kushida 9 8 14 Ayanokoji 7 7 14 Sakura 6 6 12
結果のように、totalはソートされてもNAMEや握力、50mがソートされません。totalとともに他も一緒にソートしたいのですが、どうすればいいのでしょうか。教えていただけると助かります。
0 コメント