리스트를 중첩? 하는 방법이 뭐예요..?

조회수 513회
import collections
import operator
Student = collections.namedtuple("Student", "name stdid grade" )
e=int(input("Input loop count: "))
list=[]
for list in range (e):

    name1=input("Input name: ")
    stdid1 =int(input("Input student id: "))
    grade1= int(input("Input grade: "))


    std=Student(name=name1, stdid=stdid1, grade=grade1)

list=sorted(list,key = attrgetter("id"))
print("===============================")
print(std)

e에 입력한 숫자만큼 식을 반복하는데 list안에 name1, stdid1, grade1을 마지막으로 입력한 값들만 포함이 돼요. 어떻게 해야 그전에 입력한 숫자들도 저장이 될까요...? 그리고 attrgetter가 정의되지 않았다고 에러가 나는데 import operator하면 attrgetter은 정의하지 않아도 되는거 아니에요?

1 답변

  • 작성하신 코드로는 마지막에 입력받은 값들로 만든 Student를 std에 계속 덮어쓰고 있기 때문에 말씀하신 결과가 나타납니다.

    Student를 저장할 list를 따로 선언하시고 해당 리스트에 std를 append하는 방식으로 작성해보세요

    그리고 import한 모듈 안에 있는 함수를 사용하려면

    operator.attrgetter() 형태로 사용하시거나

    from operator import attrgetter의 형태로 import 해오셔야 합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)