《39》連想リスト課題〈Python 2.x 版〉

実録:はじめてのプログラミング記事一覧
《39》連想リスト課題

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
2009年3月9日(月)

今日の進捗

  • The Python Standard Library: Mapping Types — dict
  • Python.use(better) -- セミナー研修テキスト
  • 連結リスト課題を「続・ひよ子のきもち」で公開
Comment
本人:野中 最後の二週間になってしまいましたが残りもよろしくお願いします。
担当:伊藤/本間 。(^^)

連想リスト課題

デザインパターンを学習するための題材として、連想リストを作成します。また、組み込み型 dict と同等の機能を実現することで、その理解を深めます。

def ex():
    m = dict()           ; print m,"\t#",m.__class__.__name__
    for e in "ABC":
        m[e] = ord(e)    ; print m

>>> ex()
{} 	# dict
{'A': 65}
{'A': 65, 'B': 66}
{'A': 65, 'C': 67, 'B': 66}

組み込み型 dict は、任意の要素対(キー/値)からなる集合(辞書)を扱うのに便利な機能を提供します。演算子 [] を使って、指定した要素対を辞書に登録します。このとき、左辺の括弧の中にはキーを、右辺には値を指定します。すると、指定されたキーと値とが対応するような構造を表現できます。ここでは、キーに文字(長さ1の文字列)を、値にその ASCII コードの値を指定しています。さらに、ジェネレーター式を利用すると、

>>> dict((e,ord(e)) for e in "ABC")
{'A': 65, 'C': 67, 'B': 66}

同じ構造をより簡潔に表現できます。

def ex():
    m = myDict()            ; print m
    for e in "ABC":
        m[e] = ord(e)       ; print m

>>> ex()
{} 	# myDict
{'A': 65}
{'A': 65, 'B': 66}
{'A': 65, 'B': 66, 'C': 67}
>>> myDict((e,ord(e)) for e in "ABC")
{'A': 65, 'B': 66, 'C': 67}

この課題で作成するクラス myDict は、連想リストの概念を実現したもので、組み込み型 dict に準拠します。そこで、この「連想リスト課題」では、dict を利用できる状況ならいつでも、myDict で代用できることを目指します。
連想リスト課題の仕様を確認したので、次回から、クラス myDict が完成するまでの過程を紹介します。

Tips

組み込み型 dict とクラス myList とでは(出力したときに)要素対の順序が異なります。その理由は、他の記事で紹介します。《りす》

Last updated♪09/03/09