문제상황:
파이썬에서 리스트를 정렬하려고 할 때, 문자열과 정수가 혼합된 경우 에러가 발생할 수 있습니다. 예를 들어, 사용자의 이름과 나이를 포함하는 리스트를 나이 순으로 정렬하려고 하는 다음과 같은 코드를 작성했습니다.
user_list = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
sorted_list = sorted(user_list, key=lambda x: x['age'], reverse=True)
이 코드를 실행하면 다음과 같은 에러로그가 발생합니다.
TypeError: '>' not supported between instances of 'str' and 'int'
해결방법:
에러가 수정된 코드와 수정된 부분에 대한 주석을 포함합니다.
user_list = [
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 35}
]
# 수정된 부분: key 함수에서 int로 변환된 나이를 반환하도록 수정합니다.
sorted_list = sorted(user_list, key=lambda x: int(x['age']), reverse=True)
원인분석:
이 에러는 파이썬에서 다른 타입의 객체를 비교하려고 할 때 발생합니다. 위의 코드에서는 문자열과 정수를 비교하려고 했기 때문에 이 에러가 발생했습니다. 원인은 key 함수에서 나이를 반환할 때 문자열로 반환했기 때문입니다.
수정된 코드에서는 key 함수에서 나이를 반환할 때 정수로 변환하여 반환하도록 수정했습니다. 이렇게 하면 에러가 발생하지 않습니다.
참고링크:
728x90