nums = ['3', '30', '34', '5', '9']
라는 문자열 리스트가 있습니다.
그리고, 다음과 같이 정렬 기준을 잡았습니다.
1) 문자열의 첫 글자를 기준으로 내림차순 정렬!
2) 만일 문자열의 첫 글자가 같을 경우 문자열 길이를 기준으로 오름차순 정렬!
그래서 저는 다음과 같이 코드를 짰습니다.
보통 첫 기준의 원소에 대해 '-'를 붙이면 내림차순 정렬이라고 알고 있는데,
이게 정수형에선 잘 먹히지만 str을 대상으로 하면 다음의 오류가 뜨더군요...
TypeError: bad operand type for unary -: 'str'
이렇게 여러 정렬 기준이 있고, key를 통해 람다함수로 정렬시키고 싶은데,
지금과 같이 문자열을 내림차순 해야할 경우가 오면 어떻게 해야 할까요...? ㅠㅠ
C++만 사용하다가 파이썬으로 넘어오니 정렬 기준 함수 커스텀 하기가 너무 어렵네요 ㅠㅠ
nums = ['3', '30', '34', '5', '9'] nums.sort(key=lambda x: (x[0], -len(x)), reverse=True)
우와!! 감사합니다!
늦어서 죄송합니다 ㅠㅠ
저렇게 - 붙일 수 있는 부분만 해서 reverse 옵션 이용하면 되는군요!!
댓글을 작성하려면 로그인해야 합니다.
kim031504 3년 전
nums = ['3', '30', '34', '5', '9']
라는 문자열 리스트가 있습니다.
그리고, 다음과 같이 정렬 기준을 잡았습니다.
1) 문자열의 첫 글자를 기준으로 내림차순 정렬!
2) 만일 문자열의 첫 글자가 같을 경우 문자열 길이를 기준으로 오름차순 정렬!
그래서 저는 다음과 같이 코드를 짰습니다.
보통 첫 기준의 원소에 대해 '-'를 붙이면 내림차순 정렬이라고 알고 있는데,
이게 정수형에선 잘 먹히지만 str을 대상으로 하면 다음의 오류가 뜨더군요...
TypeError: bad operand type for unary -: 'str'
이렇게 여러 정렬 기준이 있고, key를 통해 람다함수로 정렬시키고 싶은데,
지금과 같이 문자열을 내림차순 해야할 경우가 오면 어떻게 해야 할까요...? ㅠㅠ
C++만 사용하다가 파이썬으로 넘어오니 정렬 기준 함수 커스텀 하기가 너무 어렵네요 ㅠㅠ