指定されたアルゴリズムの問題は解けたので構造体に戻ります。
構造体の整列から。
class Member():
def __init__(self, name, old, birth, state):
self.name = name
self.old = old
self.birth = birth
self.state = state
#main
N = int(input())
members =[]
for _ in range(N):
member = Member(*input().split())
members.append(member)
#sort members[1]=oldに注目してソート
members.sort(reverse=False, key=lambda x:x[1])
for i in range(N):
print(members[i].name,members[i].old,members[i].birth,members[i].state)
とここまでかけたんですが、ソートの仕方が間違っているようでエラーに。
Traceback (most recent call last):
File "Main.py", line 19, in <module>
members.sort(reverse=False, key=lambda x:x[1])
File "Main.py", line 19, in <lambda>
members.sort(reverse=False, key=lambda x:x[1])
TypeError: 'Member' object is not subscriptable
なぜかなと思ったんですが、添字が間違っていたようで。
class Member():
def __init__(self, name, old, birth, state):
self.name = name
self.old = old
self.birth = birth
self.state = state
#main
N = int(input())
members =[]
for _ in range(N):
member = Member(*input().split())
members.append(member)
#sort membersのoldに注目してソート
members.sort(reverse=False, key=lambda x:x.old)
for i in range(N):
print(members[i].name,members[i].old,members[i].birth,members[i].state)
これでいけました。
で、回答を見たんですが、上のラムダ式を使わない方法。
これ、多分選択ソートですね。
アルゴリズムの勉強したのが早速役に立ったようです。
class Member():
def __init__(self, name, old, birth, state):
self.name = name
self.old = old
self.birth = birth
self.state = state
#main
N = int(input())
members =[]
for _ in range(N):
member = Member(*input().split())
members.append(member)
#sort membersのoldに注目してソート
#左端から右端まで
for i in range(N):
#左端+1番めから右端まで
for j in range(i+1, N):
#左端の要素と比較して小さかったらスワップ
if members[i].old > members[j].old:
members[i], members[j] = members[j], members[i]
for i in range(N):
print(members[i].name,members[i].old,members[i].birth,members[i].state)