logo

__dict__(파이썬)

Python에서 사전은 정렬되지 않은 데이터 값 세트 그럴 수도 있지 데이터 값을 저장하는 데 사용 지도와 비슷하다. 요소당 단일 값만 포함할 수 있는 다른 데이터 유형과 달리 사전에는 핵심 가치 쌍. 사전을 만들려면 더 효율적 , Key-Value가 제공됩니다.

속성 액세스와 관련된 경우 점은 '.' (에서와 같이 x.any_attribute )은 대부분의 사용자에게 친숙한 전부입니다. 간단히 말해서, 속성 액세스는 이미 가지고 있는 개체에 연결된 개체를 얻는 프로세스입니다. . Python을 사용하는 사람에게는 세부 사항을 너무 깊이 다루지 않고도 매우 간단해 보일 수 있습니다. 그러나 비교적 간단한 이 프로세스 뒤에는 많은 작업이 진행되고 있습니다.

_dict_는 무엇인가요?

모든 모듈에는 다음과 같은 고유한 속성이 있습니다. __dict__. 이 사전 모듈에 대한 기호 테이블을 포함합니다. . 항목의 (쓰기 가능) 특성은 사전이나 다른 매핑 개체에 저장됩니다.

간단히 말해서, Python의 모든 객체에는 __dict__ 기호로 표시되는 속성 . 또한 이 개체에는 지정된 모든 속성이 있습니다. __dict__의 또 다른 이름은 다음과 같습니다. 매핑 프록시 물체. 우리는 다음을 통해 사전을 사용할 수 있습니다. __dict__ 속성 ​​적용 클래스 객체에.

블록 자바를 잡아보세요

구문:

 object.__dict__ 

예 :

 class AnimalClass: def __init__(self,identity,age): self.identity = identity self.age = age def feature(self): if self.age == '10': return True else: return False ac = AnimalClass('Lion','10') print(ac.__dict__) 

산출:

 {'identity': 'Lion', 'age': '10'} 

예시 2:

이 예에서는 다음을 통해 이를 보여줍니다. __dict__ 속성 , 어떤 객체에서든 사전을 만들 수 있습니다.

 # class Flowers is defined class Flowers: # constructor def __init__(self): # keys are being initialized with # their corresponding values self.Rose = 'red' self.Lily = 'white' self.Lotus = 'pink' def displayit(self): print('The Dictionary from object fields belongs to the class Flowers :') # object animal of class Animals flower = Flowers() # calling displayit function flower.displayit() # calling the attribute __dict__ on flower # object and making it print it print(flower.__dict__) 

산출:

 The Dictionary from object fields belongs to the class Flowers : {'Rose': 'red', 'Lily': 'white', 'Lotus': 'pink'} 

예시 3:

 def funct(): pass funct.practice = 1 print(funct.__dict__) class PracticeClass: x = 1 def practice_function(self): pass print(PracticeClass.__dict__) 

산출:

 {'practice': 1} {'__module__': '__main__', 'x': 1, 'practice_function': , '__dict__': , '__weakref__': , '__doc__': None} 

Python에서 __dict__를 사용하지 않고 Dictionary 사용하기:

사전 만들기:

Python에서는 다음을 포함하여 사전을 만들 수 있습니다. 중괄호 안의 항목 목록을 쉼표로 구분합니다. . 사전은 값 쌍을 저장합니다. 여기서 한 쌍 요소는 키이고 다른 요소는 키입니다. 핵심 가치 . 대조적으로 열쇠, 어느 반복될 수 없으며 변경할 수 없어야 합니다. 값 사전에서 모든 유형의 데이터가 가능하며 복제될 수 있습니다. .

요소는 다음과 같습니다 쉼표로 구분 , 각 키는 해당 값과 구별됩니다. 콜론(:)으로, 전체 구조는 다음과 같습니다. 중괄호 . 모든 단어가 전혀 없는 사전은 다음과 같이 작성됩니다. {} .

사전의 키는 다음과 같아야 합니다. 불변 , 와 같은 정수, 튜플 또는 문자열 , 값은 모든 유형이 될 수 있습니다. Python 사전에서는 철자가 다른 동일한 키 이름이 다음과 같이 간주됩니다. 별개의 키. 주의하시기 바랍니다 사전 키는 대소문자를 구분합니다. ; 이름은 비슷하지만 대소문자가 다른 키는 다르게 처리됩니다.

예 :

 # Creating a Dictionary # using Integer Keys only Dict = {1: 'JAVA', 2: 'T', 3: 'POINT'} print('
Creating a Dictionary by using Integer Keys : ') print(Dict) # Creating a Dictionary # using various Mixed keys Dict = {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} print('
Creating a Dictionary by using Mixed Keys : ') print(Dict) 

산출:

 Creating a Dictionary by using Integer Keys : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using Mixed Keys : {'Company': 'JavaTpoint', 7: [22, 35, 46, 97]} 

그만큼 내장 메소드 dict() 또한 사전 생성 . 간단히 말해서 두 개의 중괄호 {} 함께하면 다음과 같은 결과가 발생합니다. 빈 사전 .

예 :

 # Creating an empty Dictionary myDict = {} print('This is an Empty Dictionary: ') print(myDict) # Creating a Dictionary # using the dict() method myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT'}) print('
Creating a Dictionary by using the dict() method : ') print(myDict) # Creating a Dictionary # using each item as a different Pair myDict = dict([(1, 'JavaTpoint'), (2, 'Great')]) print('
Creating a Dictionary by using each item as a different pair : ') print(myDict) 

산출:

 This is an Empty Dictionary: {} Creating a Dictionary by using the dict() method : {1: 'JAVA', 2: 'T', 3: 'POINT'} Creating a Dictionary by using each item as a different pair : {1: 'JavaTpoint', 2: 'Great'} 

사전 생성의 복잡성:

  • 시간 복잡도 : O(길이(dict))
  • 공간 복잡도 : 에)

중첩된 사전:

하나 이상의 사전이 있는 형태의 사전이다. 키에는 값으로 사전이 첨부되어 있습니다. 열쇠의.

예 :

 # Creating a Nested Dictionary # as mentioned above using a dictionary as a value to a key in # a dictionary myDict = dict({1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}}) print('
Creating a Nested Dictionary : ') print(myDict) 

산출:

 Creating a Nested Dictionary : {1: 'JAVA', 2: 'T', 3: 'POINT', 4: {1: 'JavaTpoint', 2: 'Great'}} 

사전에 요소 추가:

있다 요소를 추가하는 여러 가지 방법 Python 사전에. 예를 들어 값과 키를 함께 지정하면 다음과 같습니다. 사전[키] = '값', 한 번에 하나의 값이 사전에 추가될 수 있습니다. 사용하여 내장 update() 함수 , 사전의 기존 값을 수정할 수 있습니다. 기존 사전은 다음을 사용하여 확장할 수도 있습니다. 중첩된 키 값 .

참고: 값을 추가할 때 키-값 조합이 이미 존재하는 경우 값이 업데이트됩니다. 그렇지 않은 경우 새 키와 값이 사전에 추가됩니다.

예 :

 # Creating Empty Dictionary myDict = {} print('Empty Dictionary: ') print(myDict) # Adding elements only one at a time myDict[0] = 'Java' myDict[3] = 'T' myDict[6] = 41 print('
Dictionary after the addition of 3 elements: ') print(myDict) # Adding a set of values # to a particular Key myDict['settingValues'] = 7, 8, 9 print('
Dictionary after the adding a set of values to a key : ') print(myDict) # Updating the existing Key's Value myDict[3] = 'tPoint' print('
Dictionary after Updated key value: ') print(myDict) # Adding Nested Key value to Dictionary myDict[8] = {'Nested' :{'A' : 'boy', 'B' : 'Girl'}} print('
Dictionary after Addition of a Nested Key: ') print(myDict) 

산출:

 Empty Dictionary: {} Dictionary after the addition of 3 elements: {0: 'Java', 3: 'T', 6: 41} Dictionary after the adding a set of values to a key : {0: 'Java', 3: 'T', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Updated key value: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9)} Dictionary after Addition of a Nested Key: {0: 'Java', 3: 'tPoint', 6: 41, 'settingValues': (7, 8, 9), 8: {'Nested': {'A': 'boy', 'B': 'Girl'}}} 

사전에 요소를 추가할 때의 복잡성:

  • 시간 복잡도: O(1)/O(n)
  • 공간 복잡도 : 오(1)

사전 요소에 액세스:

사전은 열쇠 , 다른 데이터 유형은 값을 검색하기 위해 인덱싱이 필요합니다. 열쇠는 get() 함수 또는 대괄호 [] 안에.

다음과 같은 경우에는 열쇠를 찾을 수 없습니다 사전에서는 KeyError가 발생함 우리가 사용한다면 대괄호 []. 반면, 열쇠를 찾을 수 없는 경우에는 get() 함수는 None을 반환합니다.

예 :

 # Python program to demonstrate the # accessing of an element, from a Dictionary # Creating a Dictionary myDict = {1: 'Java', 'name': 'T', 2: 'Point', 4: 'Website'} # accessing an element using key print('Accessing an element using the key:') print(myDict['name']) print('Accessing another element using the key:') print(myDict[4]) # accessing an element using the get() method print('Accessing an using the get() method:') print(myDict.get(2)) print('Accessing another using the get() method:') print(myDict.get(1)) 

산출:

 Accessing an element using the key: T Accessing another element using the key: Website Accessing an using the get() method: Point Accessing another using the get() method: Java 

사전의 요소에 액세스할 때의 복잡성:

  • 시간 복잡도: 오(1)
  • 공간 복잡도 : 오(1)

중첩된 사전의 요소에 액세스:

우리는 다음의 도움을 받을 수 있습니다. 인덱싱 [] 기술 기존 키의 값을 가져오려면 중첩된 사전 .

예 :

 # Creating a Dictionary myDict = {'myDict1': {3: 'JavatPoint'}, 'myDict2': {'Info.': 'Website'}} # Accessing the elements using the key print(myDict['myDict1']) print(myDict['myDict1'][3]) print(myDict['myDict2']['Info.']) 

산출:

C#에는 문자열이 포함되어 있습니다.
 {3: 'JavatPoint'} JavatPoint Website 

내장 사전 메소드:

분명한() :

dict.clear() 함수 모든 키-값 쌍을 제거합니다. 사전에서.

복사() :

더 얕은 사전 사본 dict.copy() 메서드에 의해 반환됩니다.

키()에서 :

제공된 iterable 사용 (문자열, 목록, 집합 또는 튜플)을 키와 지정된 값으로 사용하는 함수 dict.fromkeys() 새 사전을 생성합니다 .

얻다() :

이것 관련된 값을 제공합니다 주어진 키로.

항목() :

딕셔너리 뷰 객체 , 사전 항목을 키-값 쌍 목록으로 동적으로 표시합니다. 반환됩니다 dict.items() 함수를 사용합니다. 사전이 업데이트되면 이 뷰 객체도 업데이트됩니다 .

자바 부울을 문자열로

dict.keys() :

dict.keys() 함수 딕셔너리 뷰 객체를 반환합니다 사전과 함께 키 목록.

팝() :

이것 키를 제거한 후 키 값을 반환합니다. . 사전에 키가 없으면 다음 중 하나를 발생시킵니다. 키 오류 또는 기본값 하나가 제공되었다면.

마시다() :

이것 사전에서 하나의 항목을 제거하고 튜플을 반환합니다. (키, 값) 쌍. 그만큼 후입선출(LIFO) 시퀀스는 쌍을 반환하는 데 사용됩니다.

기본값으로 설정() :

이것 주어진 키에 대한 사전의 값을 반환합니다. . 키를 찾을 수 없는 경우 제공된 키가 포함된 키 기본값 추가됩니다. 그것은 설정한다 없음 으로 기본값 공급되지 않는 경우.

값() :

그만큼 동적 뷰를 제공하는 딕셔너리 뷰 객체 각 값의 사전에 존재하는 것이 반환됩니다. dict.values() 함수를 사용합니다. 사전이 업데이트되면 이 뷰 객체도 업데이트됩니다 .

업데이트() :

사전 또는 키-값 쌍이 있는 모든 반복 가능 , 예를 들어 튜플, 업데이트 가능 dict.update() 함수를 사용합니다.

예 :

 # Example to demonstrate all dictionary methods #Creating a Dictionary mydict1={1:'HTML',2:'CSS',3:'Javascript',4:'Python'} #copy method mydict2=mydict1.copy() print(mydict2) #clear method mydict1.clear() print(mydict1) #get method print(mydict2.get(1)) #items method print(mydict2.items()) #keys method print(mydict2.keys()) #pop method mydict2.pop(4) print(mydict2) #popitem method mydict2.popitem() print(mydict2) #update method mydict2.update({2:'C++'}) print(mydict2) #values method print(mydict2.values()) 

산출:

 {1: 'HTML', 2: 'CSS', 3: 'Javascript', 4: 'Python'} {} HTML dict_items([(1, 'HTML'), (2, 'CSS'), (3, 'Javascript'), (4, 'Python')]) dict_keys([1, 2, 3, 4]) {1: 'HTML', 2: 'CSS', 3: 'Javascript'} {1: 'HTML', 2: 'CSS'} {1: 'HTML', 2: 'C++'} dict_values(['HTML', 'C++']) 

사전과 목록의 차이점:

다음과 같은 데이터 구조 목록과 사전 근본적으로 서로 다릅니다. 안 일련의 품목을 주문했습니다. 에 저장할 수 있습니다 목록 이를 통해 색인을 생성하거나 반복할 수 있습니다. 목록은 변경 가능한 유형이므로 이미 생성된 후에도 변경할 수 있습니다. 그만큼 파이썬 사전키-값 저장 그리고 구현 해시 테이블 . 특정 순서를 따르지 않으며 해시 가능한 키가 필요합니다. 또한 주요 조회가 빠릅니다.

기울기 요소에는 다음 기능이 포함되어 있습니다.

  • 특별히 다시 주문하지 않는 한, 현재 순서를 유지하다 (예를 들어 목록을 정렬하여)
  • 어떤 유형이든 상관없습니다. 종류의 조합 .
  • 숫자(0 기반) 인덱스를 통해, 우리는 그것들에 접근할 수 있습니다.

의 특징 사전 요소는 다음과 같습니다:

  • 각 항목에는 값과 키 .
  • 주문은 보증되지 않음 .
  • 핵심 가치요소에 액세스하는 데 사용됩니다.모든 해시테이블 유형(딕셔너리 제외)키 값으로 사용될 수 있으며 유형이 결합될 수 있습니다.어떤 종류의 가치라도, 다른 dicts 포함, 허용된다 , 유형을 조합할 수 있습니다.

용법 :

우리는 사전 우리가 가지고 있다면 값에 해당하는 고유 키 세트 , 하지만 목록 우리가 있을 때 주문한 물건 그룹 .

결론 :

  • 컴퓨터 언어에서는 사전은 정보를 저장하는 데 사용되는 일종의 데이터 구조입니다. 그것은 어떻게 든 관련이 있습니다.
  • 모든 모듈에는 다음과 같은 고유한 속성이 있습니다. __dict__.
  • __dict__ 모듈에 대한 기호 테이블을 포함합니다. .
  • 요소의 속성은 매핑 개체.
  • Python의 모든 객체에는 __dict__ 기호로 표시되는 속성 .
  • __dict__의 또 다른 이름은 다음과 같습니다. 매핑프록시 객체.
  • Python 사전의 두 구성 요소는 다음과 같습니다. 키와 값 .
  • 받지 못할 수도 있다 사전은 데이터를 특정 순서로 유지하지 않기 때문에 입력한 것과 유사한 순서로 데이터를 다시 반환합니다.
  • 키는 다음과 같이 구성됩니다. 한 가지.
  • 값은 다음과 같습니다. 정수, 목록, 목록 안의 목록 , 등.
  • 그 이상은 있을 수 없습니다. 키당 하나의 항목 (중복 키는 허용되지 않습니다)
  • 사전의 키는 다음과 같아야 합니다. 불변 , 와 같은 정수, 튜플 또는 문자열 , 값은 모든 유형이 될 수 있습니다.
  • 사전 키는 대소문자를 구분합니다 ; Python 사전에서는 철자가 다른 동일한 키 이름이 다음으로 간주됩니다. 고유 키 .