kim031504   3년 전

nums = ['3', '30', '34', '5', '9']

라는 문자열 리스트가 있습니다.

그리고, 다음과 같이 정렬 기준을 잡았습니다.

1) 문자열의 첫 글자를 기준으로 내림차순 정렬!

2) 만일 문자열의 첫 글자가 같을 경우 문자열 길이를 기준으로 오름차순 정렬!

그래서 저는 다음과 같이 코드를 짰습니다.

보통 첫 기준의 원소에 대해 '-'를 붙이면 내림차순 정렬이라고 알고 있는데,

이게 정수형에선 잘 먹히지만 str을 대상으로 하면 다음의 오류가 뜨더군요...

                                             TypeError: bad operand type for unary -: 'str'

이렇게 여러 정렬 기준이 있고, key를 통해 람다함수로 정렬시키고 싶은데,

지금과 같이 문자열을 내림차순 해야할 경우가 오면 어떻게 해야 할까요...? ㅠㅠ

C++만 사용하다가 파이썬으로 넘어오니 정렬 기준 함수 커스텀 하기가 너무 어렵네요 ㅠㅠ

first0506   3년 전

nums = ['3', '30', '34', '5', '9']
nums.sort(key=lambda x: (x[0], -len(x)), reverse=True)

kim031504   3년 전

우와!! 감사합니다!

늦어서 죄송합니다 ㅠㅠ 

저렇게 - 붙일 수 있는 부분만 해서 reverse 옵션 이용하면 되는군요!!

댓글을 작성하려면 로그인해야 합니다.