3章ディクショナリとセット

ユーザのプログラムコードが明示的にディクショナリを使用していないときでも、実行中のPythonプログラムは同時にアクティブなディクショナリをたくさん持っています。

——A. M. Kuchling『Beautiful Code』, 18章「Python's Dictionary Implementation」より[EN-09][JP-04]

dict型はプログラムで広く使用されるだけでなく、Pythonの基盤も構成しています。モジュールの名前空間、クラスとインスタンスの属性、関数のキーワード引数といった基盤的な構造はディクショナリで実装されています。組み込み関数は__builtins__.__dict__にあります。

重要な役割を担っているため、Pythonのdictは高度に最適化されています。Pythonの高性能dictの背後にあるエンジンはハッシュテーブルです。

本章ではセット(set)もカバーしますが、それはセットもハッシュテーブルで実装されているからです。ハッシュテーブルの仕組みを知ることで、ディクショナリとセットを最大限に活用できるようになります。

本章の概要は次のとおりです。

  • 一般的なディクショナリメソッド
  • 存在しないキーに対する特別な処理
  • 標準ライブラリにあるdictのバリエーション
  • set型およびfrozenset
  • ハッシュテーブルの仕組み
  • ハッシュテーブルの注意事項(キーの型の制限、予測できない順序など)

3.1 一般的なマップ型

collections.abcモジュールは、dictやこれに類似した型のインタフェースを形式化する抽象基底クラスであるMappingおよびMutableMappingを提供しています(Python 2.6から3.2では、これらのクラスは ...

Get Fluent Python ―Pythonicな思考とコーディング手法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.