辞書 dict は Python における重要なデータ構造です。辞書では、各キーが値に対応します。キーと値の関係はマッピングと呼ばれます。各キーがマッピングされているとも言えます。値が優れています。
Map はより一般的なデータ型であり、具体的には Python の辞書です。 (推奨される学習: Python ビデオ チュートリアル )
辞書を使用するときは、キーを介して値にどのようにマップされるのかという疑問を持つ必要があります。このキーの値が誰であるか知っていますか?
そこで、私たちはこのアイデアを思いつきました:
リストを使用して、キーと値のオブジェクトを 1 つずつ保存します。検索するときは、リストをたどって、探しているキーを見つけます。 、オブジェクト内の値valueを取り出します。
このアイデアは非常にシンプルで、すぐに実装できます。
ここでは、最初に、カスタマイズ マップを実装するためのコレクション モジュールに含まれる関連する抽象基本クラスである Mapping と MutableMapping を紹介します。クラス。 Mapping には dict 内のすべての不変メソッドが含まれており、MutableMapping 拡張機能にはすべての変数メソッドが含まれていますが、どちらにも 5 つのコア特殊メソッド (getitem、setitem、delitem、len、iter) は含まれていません。つまり、これら 5 つのコア メソッドを実装してデータ構造を使用できるようにすることが目標です。
from collections import MutableMapping class MyMap(MutableMapping): class item(): def __init__(self,key,value): self.key = key self.value = value def __eq__(self, other): return self.key == other.key def __ne__(self, other): return self.key != other.key def __init__(self): self.table = [] def __getitem__(self, item): for i in self.table: if i.key == item: return i.value raise KeyError('Key Error: '+ repr(item)) def __setitem__(self, key, value): for i in self.table: if i.key == key: i.value = value return self.table.append(self.item(key,value)) def __delitem__(self, key): for n,i in enumerate(self.table): if i.key == key: self.pop(n) return raise KeyError('Key Error: '+ repr(key)) def __len__(self): return len(self.table) def __iter__(self): for i in self.table: yield i.key
上記の方法は非常に単純ですが、あまり効率的ではありません。キーのインデックスを見つけるために毎回リストを走査する必要があるため、時間計算量は O(n) です。
Python 関連の技術記事の詳細については、Python チュートリアル 列にアクセスして学習してください。
以上がPython はどのようにマッピングを実装するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。