파이썬) 리스트로 새로운 리스트 만들기
조회수 3246회
names = [["Joe", "Smith"], ["Mary", "Smith"], ["Pete", "Smith"], ["Lily", "Smith"], ["Heinz", "Maus"], ["Brigita", "Maus"], ["Juergen", "Maus"], ["Jean", "St. Croix"], ["sophie", "St. Croix"]]
이 배열을 가지고
last_name_list = [['St. Croix', 해당 성을 가진 사람들의 숫자, ['sophie', 'Jean']], ... ] 이런 식으로 앞에 성, 가운데에는 그 성을 가진 사람들의 숫자, 뒤에는 같은 성을 가진 사람의 이름들을 나열하는 배열을 만드는 코드.. 도무지 생각이 안떠오르네요..
도와주세요!! ㅜㅜ
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
코딩을 시작하시기 전에 먼저 손으로 자료구조를 그려보세요.
연습장에 위와 같이 사람 목록이 있다면 어떻게 목적대로 만들어 낼 수 있을지를 먼저 그려보시고 그 내용을 코드로 옮기시면 쉽게 해결 가능하실 겁니다.
주석으로 설명을 달아놨습니다.
names = [ ["Joe", "Smith"], ["Mary", "Smith"], ["Pete", "Smith"], ["Lily", "Smith"], ["Heinz", "Maus"], ["Brigita", "Maus"], ["Juergen", "Maus"], ["Jean", "St. Croix"], ["sophie", "St. Croix"] ] last_name_dict = {} # 성이 같은 사람끼리 모으기 위한 사전 for first_name, last_name in names: # 이름을 순회하면서 if last_name not in last_name_dict: # 사전에 해당 성이 없다면 last_name_dict[last_name] = [] # 사전에 해당 성을 key로 해서 빈 목록을 넣어준다. last_name_dict[last_name].append(first_name) # 해당 성에 엮여있는 목록에 같은 이름을 넣어준다. last_name_list = [] # 출력용 목록 for last_name, first_names in last_name_dict.items(): # 위에서 모아준 사전을 순회하면서 item = [last_name, len(first_names), first_names] # 성, 사람 수, 이름 목록을 만든다. last_name_list.append(item) # 목록에 추가. print(last_name_list) # [['St. Croix', 2, ['Jean', 'sophie']], ['Maus', 3, ['Heinz', 'Brigita', 'Juergen']], ['Smith', 4, ['Joe', 'Mary', 'Pete', 'Lily']]]
아래 링크에서 시작하는데 도움이 되는 내용을 많이 찾으실 수 있을것 같습니다.
http://interactivepython.org/runestone/static/thinkcspy/index.html
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력