인덱싱을 지원하지 않는 소스에서 정보를 추출하려고 할 때 “객체를 구독할 수 없습니다.”라는 오류 메시지가 발생할 수 있습니다. 이 문제는 인덱싱을 위한 데이터 유형을 잘못 선택했기 때문에 발생합니다.
구독 가능한 유형과 관련하여 발생할 수 있는 오류를 해결하는 방법에 대한 정보를 포함하여 구독 가능한 유형에 대해 자세히 알아보세요.
파이썬에서 “구독 가능”이란 무엇을 의미하나요?
Python에서 “구독 가능”이라는 명칭은 개별적으로 액세스할 수 있는 여러 값을 저장할 수 있는 데이터 유형을 의미합니다. 구독 가능한 데이터 유형에서 특정 요소를 검색하려면 괄호로 묶인 대괄호 표기법을 사용할 수 있으며, 특히 닫는 괄호 바로 앞에 위치한 인덱스를 사용할 수 있습니다.
개체는 구독할 수 없습니다”.
목록, 문자열, 튜플 및 사전.
list_example = [1, 3, 5, "Idowu"]
string_example = "Idowu Omisola"
tuple_example = (1, 3, 5, "Idowu")
dict_example = {"name": "Idowu", "Language": "Yoruba"}
print(list_example[0]) # 1
print(string_example[3]) # w
print(tuple_example[1]) # 3
print(dict_example["name"]) # Idowu
집합, 정수, 부동 소수점, 부울과 같은 특정 데이터 유형은 인덱싱을 통해 액세스할 수 없으므로 구독 대상이 아니라는 점에 유의해야 합니다.
float_example = 12.45
int_example = 12367
bool_example = True
set_example = {1, 3, 5, "Python"}
print(float_example[1])
print(bool_example[2])
print(int_example[2])
print(set_example[2])
이러한 각 문을 실행하면 참조되는 객체를 인덱스 또는 키로 액세스할 수 없다는 오류 메시지가 표시됩니다.
예외 해결
다양한 데이터 유형을 인덱싱하는 지침에 익숙해지면 “객체를 구독할 수 없음” 오류를 완화하는 프로세스가 더 관리하기 쉬워집니다. 따라서 Python 디버깅 작업을 시작하기 전에 해당 객체의 데이터 유형을 검토하고 색인화에 적합한지 확인하는 것이 좋습니다.
float_example = 12.45
int_example = 12367
bool_example = True
set_example = {1, 3, 5, "Python"}
print(type(float_example)) # <class 'float'>
print(type(int_example)) # <class 'int'>
print(type(bool_example)) # <class 'bool'>
print(type(set_example)) # <class 'set'>
데이터 유형을 인덱싱할 수 없다는 것을 확인한 후 열거 가능 유형으로 변환하면 문제가 해결됩니다. 이 접근 방식은 정수, 부동 소수점 숫자, 부울 값과 같은 데이터 유형을 문자열로 변환하면 해당 데이터에 대한 인덱싱 기능을 사용할 수 있는 외부 소스에서 얻은 데이터를 처리할 때 유용합니다.
print(str(float_example)[:2]) # 12
print(str(int_example)[:2]) # 12
print(str(bool_example)[:2]) # Tr
생성된 Python 문자열의 조작은 다양합니다. 정수 및 부동 소수점의 경우 출력에서 원래 데이터 유형을 유지하고자 할 수 있습니다. 이는 인덱싱된 값을 문자열로 변환한 후 해당 데이터 유형으로 다시 변환하면 가능합니다.
converted_float = float(str(float_example)[:2])
converted_int = int(str(int_example)[:2])
# 12.0 Data type:<class 'float'>
print(converted_float, f'Data type:{type(converted_float)}')
# 12 Data type:<class 'int'>
print(converted_int, f'Data type:{type(converted_int)}')
집합을 리스트로 변환할 수 있지만, 이 과정에서 집합 내 요소의 원래 순서가 유지되지는 않습니다. Python 명령 “list(set)”을 사용하면 정렬된 목록이 생성되지만, 요소의 재배열은 불가피합니다.구성 요소의 위치를 보존하는 목록을 얻으려면 Python 내에서 람다 함수의 기능을 사용하는 것이 좋습니다.
set_example = {1, 3, 5, "Python"}
converted = sorted(set_example, key=lambda x: (isinstance(x, str), x))
print(converted[3]) # Python
마스터 파이썬 디버깅
파이썬을 쉽게 익힐 수 있다는 점은 주목할 만하지만, 그 단순성으로 인해 특정 처리 방법이 필요한 특정 예외가 발생할 때 어려움을 겪을 수 있습니다. 따라서 디버깅 기술을 개발하고 신중한 문제 해결을 위해 충분한 시간을 할애하는 것이 중요하며, 이러한 관행은 파이썬 프로그래밍 내에서 오류 및 예외를 해결하는 데 중요한 역할을 합니다.