인덱싱을 지원하지 않는 소스에서 정보를 추출하려고 할 때 “객체를 구독할 수 없습니다.”라는 오류 메시지가 발생할 수 있습니다. 이 문제는 인덱싱을 위한 데이터 유형을 잘못 선택했기 때문에 발생합니다.

구독 가능한 유형과 관련하여 발생할 수 있는 오류를 해결하는 방법에 대한 정보를 포함하여 구독 가능한 유형에 대해 자세히 알아보세요.

파이썬에서 “구독 가능”이란 무엇을 의미하나요?

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

마스터 파이썬 디버깅

파이썬을 쉽게 익힐 수 있다는 점은 주목할 만하지만, 그 단순성으로 인해 특정 처리 방법이 필요한 특정 예외가 발생할 때 어려움을 겪을 수 있습니다. 따라서 디버깅 기술을 개발하고 신중한 문제 해결을 위해 충분한 시간을 할애하는 것이 중요하며, 이러한 관행은 파이썬 프로그래밍 내에서 오류 및 예외를 해결하는 데 중요한 역할을 합니다.

이 글도 확인해 보세요:  자바스크립트에서 Intl API를 사용하는 방법

By 이지원

상상력이 풍부한 웹 디자이너이자 안드로이드 앱 마니아인 이지원님은 예술적 감각과 기술적 노하우가 독특하게 조화를 이루고 있습니다. 모바일 기술의 방대한 잠재력을 끊임없이 탐구하고, 최적화된 사용자 중심 경험을 제공하기 위해 최선을 다하고 있습니다. 창의적인 비전과 뛰어난 디자인 역량을 바탕으로 All Things N의 잠재 독자가 공감할 수 있는 매력적인 콘텐츠를 제작합니다.