sequence형을 저장하는 리스트를 정렬하고 싶습니다


발생하는 문제 및 실행환경

data1 = [[1,2,3], [4,5,6], [7,8,9]]
data2 = [(1,2,3), (4,5,6), (7,8,9)]

이런식으로 리스트 원소로 리스트나 튜플을 저장하고 있는데 각 원소에서 2번째 아이템(2,5,8)을 기준으로 정렬하려고 합니다.

파이썬 3.5에서는 data1.sort()로 하면 첫번째 원소가 기준이던데 어떻게 바꿔야할지 모르겠네요

  • 2016년 02월 04일에 작성됨

조회수 270


1 답변


좋아요
0
싫어요
채택취소하기

1. list.sort(*, key=None, reverse=None) - 기존 리스트를 바꿈

list.sort(*, key=None, reverse=None)에서 key를 2번째 원소로 지정

data1 = [[10,11,12], [201,8,3], [4,5,6], [13,8,9]]

data1.sort(key=lambda tup:tup[1])
#내림차순에서는 data1.sort(key=lambda tup:tup[1], reverse=True))

print(data1)

2. sorted(iterable[, key][, reverse]) - 새 리스트를 return

sorted(iterable[, key][, reverse])는 iterable을 소팅한 리스트를 return합니다 쓰는 방법은 1과 유사합니다

data1 = [[10,11,12], [201,8,3], [4,5,6], [13,8,9]]

sortedData = sorted(data1, key=lambda tup: tup[1])
#내림차순에서는 sortedData = sorted(data1, key=lambda tup: tup[1], reversed=True)

  • 2016년 02월 04일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close