1. マップ型を実装した辞書
Python において、ハッシュに相当するものはマップ型と呼ばれる。
2.3.8 マップ型 によると、
現在のところは標準のマップ型、dictionary だけです。
インターフェスがマップ型で、その実装が辞書。 ただし、Python ではインターフェイスと言わずに、プロトコルと呼ぶ。
2.3.8 マップ型に定義されているメソッドを適当に分類しておく。
最初にマップ型のオブジェクトを作成する。
# 辞書: key は変更不能でなければならない。 persons = {"Tarou" : 20, "Hanako" : 15, "Jiro" : 30}
2. 基本的な操作
# 要素の値をキーで取得 print persons['Hanako'] # 要素の追加 persons['Saburou'] = 40 print persons # 要素を削除 del persons['Hanako'] print persons # 要素の走査 for k,v in persons.iteritems(): print k, v # 大きさ print len(persons)
3. キーに対する操作
# キーの一覧を取得 print persons.keys() # キーの存否を確認する print persons.has_key('Jiro') print persons.has_key('Tarosuke') print 'Jiro' in persons print 'Tarousuke' in persons print 'Tarousuke' not in persons
4. 値を取得
# 値の一覧を取得 print persons.values()
5. イテレータ系
# iteritems() に加えて... print [person for person in persons.iterkeys()] print [person for person in persons.itervalues()]
6. 基本操作の拡張
# --- 要素の取得 # 要素がない場合、KeyError が投げられる #print persons['Hana'] # キーがないとき、None が返される print persons.get('Hana') # キーがないときに返される値を指定 print persons.get('Hana', u"Hana さんはいません") # 以下と同じ if not persons.get('Hana'): print u"Hana さんはいません" else: print person['Hana'] # --- なければ登録 # get との違いは、キーがない場合、辞書に登録 persons.setdefault('Hana', 10) print persons # --- pop : 取り出して削除 print persons.pop('Jiro') print persons persons['Jiro'] = 30 # 任意のペアを取り出す print persons.popitem() # --- 要素の更新・追加 # 更新 persons.update({'Hana':100}) print persons # 追加 persons.update({'Funa' :200, 'Hoge': 300}) print persons # type({}) ->だからこれを利用して print dict.fromkeys([10,20,30,40], "hoge") print dict.fromkeys('abcd', "piyo")
7. その他
# タプルのリストから辞書を生成する - リスト内包表記を使って nums = [1,2,3,4,5] print dict([(x, x+10) for x in nums]) # タプルのリスト cf. keys(), values() print persons.items() # 浅いコピー p2 = persons.copy() print p2 # 要素を全て削除 persons.clear() print persons
dict() は、関数電卓 (Python 版) の使い方が参考になる。
135: # 演算子の名前をキーにしてハッシュ表を作る 136: H_OP=dict([(str(op), op) for op in L_OP])
0コメント:
コメントを投稿