logo

Python の __dict__

Python では、辞書は 順序のないデータ値のセット それはあり得る データ値を保存するために使用されます 地図と同じように。要素ごとに 1 つの値しか含めることができない他のデータ型とは異なり、ディクショナリには、 キー:値 ペア。辞書を作るには もっと効率的 、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__ を使用せずに辞書を使用する:

辞書の作成:

Python では、 中括弧内にカンマで区切ったエントリのリスト 。ディクショナリは値のペアを格納します。ここで、1 つのペア要素はキーであり、もう 1 つはそのペア要素です キー:値 。対照的に、 キー、 どれの 値は繰り返すことができず、不変でなければなりません 辞書で あらゆる種類のデータを使用でき、複製することができます

要素は カンマで区切られた 、各キーはその値から区別されます。 コロン (:) によって、 そして構造全体は以下に含まれます 中括弧 。すべての単語が完全に含まれていない辞書は次のように記述されます。 {}

辞書のキーは次のとおりである必要があります。 不変 、 のような 整数、タプル、または文字列 ただし、値は任意の型にすることができます。 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() も可能になります 辞書の作成 。簡単に言えば 2 つの中括弧 {} 一緒にすると、 空の辞書

例 :

 # 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))
  • 空間の複雑さ : の上)

ネストされた辞書:

1 つまたは複数の辞書の形式です。 キーには値として辞書が付加されています 鍵の。

サニーデル年齢

例 :

 # 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辞書に。たとえば、値とキーを一緒に指定すると、 dict[キー] = '値', 一度に 1 つの値を辞書に追加できます。を使用して、 組み込みの 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'}}} 

Dictionary に要素を追加する場合の複雑さ:

  • 時間計算量 : 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 

Dictionary 内の要素にアクセスするための複雑さ:

  • 時間計算量 : ○(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.']) 

出力:

 {3: 'JavatPoint'} JavatPoint Website 

組み込みの辞書メソッド:

クリア() :

関数 dict.clear() すべてのキーと値のペアを削除します 辞書から。

コピー() :

辞書の浅いコピー dict.copy() メソッドによって返されます。

fromkeys() :

提供された反復可能オブジェクトの使用 (文字列、リスト、セット、またはタプル) をキーとして、および指定された値、関数 dict.fromkeys() 新しい辞書を作成します

得る() :

これ 関連する値を与えます 指定されたキーを使用して。

items() :

ディクショナリビューオブジェクト 、キーと値のペアのリストとして辞書項目を動的に表示します。 返される 関数 dict.items() によって。辞書が更新されると、これは ビューオブジェクトも更新されます

dict.keys() :

アプレット アプレット

関数 dict.keys() ディクショナリビューオブジェクトを返します 辞書と一緒に キーのリスト。

ポップ() ​​:

これ キーを削除した後のキーの値を返します 。キーが辞書にない場合は、 キーエラー または、を返します デフォルト値 提供されていた場合。

飲む() :

これ 辞書から 1 つの項目を削除し、タプルを返します (キー、値) ペアの。の 後入れ先出し (LIFO) シーケンスはペアを返すために使用されます。

setdefault() :

これ 指定されたキーの辞書の値を返します 。キーが見つからない場合は、提供されたキー デフォルト値 が追加されます。設定します なし として デフォルト値 供給されていない場合。

値() :

動的なビューを提供するディクショナリ ビュー オブジェクト それぞれの値の 辞書に存在する場合は返されます 関数 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++']) 

辞書とリストの区別:

などのデータ構造 リストと辞書 根本的に似ていない。アン 注文した商品シリーズ に保管できます リスト これにより、インデックスを作成したり、反復したりできるようになります。リストは変更可能なタイプであるため、既に生成された後でも変更することができます。の Python辞書 です キーと値のストレージ そして、の実装 ハッシュ表 。特定のシーケンスには従わず、ハッシュ可能なキーが必要です。さらに、キーの検索も高速です。

リストの 要素には次の機能が含まれます。

  • 特に並べ替えない限り、 現在の順序を維持する (たとえば、リストを並べ替えることによって)。
  • それらはどのようなタイプであっても、あるいは ある種の組み合わせ
  • 数値 (ゼロベース) インデックスによるにアクセスする場合があります。

の特徴 辞書 要素は次のとおりです。

  • 各エントリには、 値とキー
  • 注文は 保証されていません
  • キーの値要素にアクセスするために使用されます。任意のハッシュテーブル型 (辞書以外)キー値に使用でき、型を組み合わせることができます。あらゆる種類の価値観、他の辞書も含めて、 許可されています 、タイプを組み合わせることができます。

使用法 :

私たちは 辞書 もし私たちが持っているなら 値に対応する個別のキーのセット 、しかし、 リスト 私たちが持っているとき 順序付けられたもののグループ

結論 :

  • コンピューター言語では、 辞書は情報を保持するために使用される一種のデータ構造です それは何らかの関係があります。
  • すべてのモジュールには、と呼ばれる固有のプロパティがあります。 __dict__。
  • __dict__ モジュールのシンボルテーブルが含まれています
  • 要素のプロパティは、 マッピングオブジェクト。
  • Python のすべてのオブジェクトには、 シンボル __dict__ で示されるプロパティ
  • __dict__ の別名は、次のようにも知られています。 マッピングプロキシオブジェクト。
  • Python 辞書の 2 つのコンポーネントは次のように呼ばれます。 キーと値
  • あなた 受け取れないかもしれない 辞書はデータを特定の順序で保持しないため、データは入力したときと同じ順序で戻されます。
  • キーは次のものだけで構成されます 一つのこと。
  • 値は次のとおりです 整数、リスト、リスト内のリスト 、など。
  • それ以上のものはあり得ません キーごとに 1 つのエントリ (重複キーは許可されません)
  • 辞書のキーは次のとおりである必要があります。 不変 、 のような 整数、タプル、または文字列 ただし、値は任意の型にすることができます。
  • 辞書 キーでは大文字と小文字が区別されます ; Python 辞書では、同じキー名の綴りが異なるものは、 個別のキー