Python TypeError: 키 기능에 키워드 인수를 사용해야 함

Salman Mehmood 2024년2월15일
Python TypeError: 키 기능에 키워드 인수를 사용해야 함

이 기사에서는 항목 목록을 정렬하고 sort() 메서드 내에서 람다 함수를 사용하는 간단하고 강력한 방법을 다룹니다. 또한 Python의 sort() 메서드를 실행하지 못한 이유에 대해서도 설명합니다.

Python의 sort() 메서드 내에서 키 인수를 사용하는 올바른 방법

정렬된 데이터는 많은 웹 서비스의 핵심입니다. 검색을 수행하면 알고리즘이 관련 결과의 정렬된 목록을 반환하고 온라인 쇼핑을 할 때 가격별로 제품을 정렬하려는 경우가 많습니다.

우리는 달력을 볼 때 약속이 시간순으로 정렬되기를 기대합니다.

고전적인 예부터 시작하여 사전순으로 정렬해 보겠습니다. 우리는 6개의 알칼리 토금속 목록을 사용할 것입니다.

그것들은 원자 번호로 정렬되지만 알파벳순으로 정렬하려면 어떻게 해야 할까요? 목록의 경우 sort() 메서드를 호출합니다.

sort() 메서드는 데이터를 알파벳순으로 오름차순으로 정렬한다고 가정합니다. 데이터를 역순으로 정렬하려면 sort() 메서드를 호출하고 reverseTrue와 같도록 지정합니다.

암호:

Earth_Metals = ["Berylium", "Magnisium", "Calcium", "strontium", "Barium", "Radium"]
Earth_Metals.sort()
print(Earth_Metals)

목록을 보면 이름이 알파벳 역순으로 정렬되어 있습니다.

출력:

['Barium', 'Berylium', 'Calcium', 'Magnisium', 'Radium', 'strontium']

이 예제를 반복해 보겠습니다. 단, 이번에는 목록이 아닌 튜플에 요소를 저장합니다. 튜플을 정렬하려고 하면 Python이 불평하고 예외를 발생시킵니다.

이 오류의 원인은 튜플이 불변 객체이기 때문입니다. 변경할 수 없으며 정렬하면 변경됩니다.

Earth_Metals = ("Berylium", "Magnisium", "Calcium", "strontium", "Barium", "Radium")
Earth_Metals.sort()
print(Earth_Metals)

출력:

AttributeError: 'tuple' object has no attribute 'sort'

더 복잡한 예를 보기 전에 목록의 sort 메서드에 대한 help() 텍스트를 살펴보겠습니다.

정렬 방법은 keyreverse라는 두 개의 키워드 인수를 허용합니다. 기본적으로 reversefalse로 설정되며 이는 데이터가 오름차순으로 정렬됨을 의미합니다.

암호:

help(list.sort)

출력:

목록의 정렬 방법에 대한 도움말 텍스트

동작이 있는 key 인수에 초점을 맞추겠습니다. 키 인수를 사용하려면 정렬할 값을 결정하는 데 사용할 함수를 전달합니다.

주문 처리를 위한 애플리케이션을 구축하고 있고 이 주문 항목 목록이 있고 이 목록의 모든 항목에는 제품 이름과 해당 가격의 두 항목이 있는 튜플이 있다고 가정합니다. 이 목록을 정렬하고 항목을 인쇄하면 어떻게 되는지 봅시다.

암호:

items = [("product1", 10), ("product2", 9), ("product3", 12)]
items.sort()
print(items)

출력:

[('product1', 10), ('product2', 9), ('product3', 12)]

Python은 이 목록을 정렬하는 방법을 모르기 때문에 코드를 실행할 때 아무 것도 변경되지 않습니다. 이 상황에서 목록을 정렬하는 Python의 기능을 정의해야 합니다.

람다 식이나 익명 함수를 사용하여 더 깔끔하게 만들 것이므로 이 함수를 먼저 정의한 다음 전달할 필요가 없습니다. 대신 람다를 추가하고 람다 함수를 작성하는 구문은 다음과 같습니다. 매개 변수 콜론을 추가한 다음 표현식을 추가합니다.

매개변수는 하나만 있습니다. 그런 다음 콜론(:) 다음에 하나의 항목을 반환합니다.

암호:

items = [("product1", 10), ("product2", 9), ("product3", 12)]
items.sort(key=lambda item: item[1])
print(items)

출력:

[('product2', 9), ('product1', 10), ('product3', 12)]

일부 초보자는 key 인수에 두 개 이상의 인수 값을 제공하려고 시도하고 key 인수는 하나의 값만 허용하기 때문에 오류가 발생합니다. 코드 실행에 실패한 또 다른 이유는 key 인수를 사용하지 않고 함수를 직접 전달했기 때문입니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Python Error