《39》連想リスト課題〈Python 3.0 版〉

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

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

》作業中です《

■ 概要

デザインパターンGoF〉Template を適用した事例を紹介します。

 Template を適用すると、それを実現する手段に依存しない抽象的な記述が可能になります。
 すると、簡潔で見通しの良いコードを記述できるようになり、アジャイル開発を促進します。

連想リスト課題

デザインパターンを学習するための題材として、連想リストを作成します。また、組み込み型 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