_第四章_まとめ


マッピング(mapping)---名前で値を参照するデータ構造.
辞書はythonの唯一の内蔵マッピングタイプです.
dict---辞書の作成方法出力
方法1
items = [('name','Gumby'),('age','42')]
d = dict(items)
print d                                             {'age':'42','name':'gumby'}
print d['name']                                     Gumby

方法2
キーワードによる辞書の作成
d = dict(name = 'Gumby',age = '42')
print d                                             {'age':'42','name':'gumby'}
print d['name']                                     Gumby

辞書の基本操作
1.len(d)はd中の項目(キー値ペア)の数を返す
2.d[k]キーkに関連付けられた値を返す
3.d[k]=vキーkに値vを関連付ける
4.del d[k]削除キーがkの項目
5.k in d dキーがkである項目がdに含まれているかどうかを検査する
辞書とリストの違い:
キータイプ:辞書のキーは必ずしも整形データではありません(ただし、そうであってもよい)、キーは任意の可変タイプ、例えば浮動小数点型(実型)、文字列であってもよい
またはメタグループ.
≪自動追加|Auto Add|emdw≫:キーが最初に辞書に存在しなくても、値を割り当てることで、辞書に新しいアイテムが作成されます.リストはリスト範囲外のインデックスに直接関連付けることはできません.
メンバーシップ:式k in d(dは辞書)は、値ではなくキーを検索します.式v in l(lはリスト)は、インデックスではなく値を検索するために使用されます.
辞書書式文字列
ディクショナリを使用して文字列をフォーマットします(文字列のみをキーとします).メタグループではありません.
phonebook = {'Beth':'9102','Alice':'2341','Cecil','3258'}
print "Cecil's phone number is %(Cecil)s." % phonebook                                Cecil's phone number is 3258

ディクショナリメソッド
1.dict.clear()メソッド------辞書のすべてのアイテムを消去します.これはその場での操作(list.sortに類似)であり、戻り値はありません(戻り値はNone)
d = {}
d['name'] = 'Gumby'
d['age'] = 42
d.clear()
print d                                                      {}

注意:dictではx=yが浅いコピーであり、x.clear()はxとyが共に指す元の辞書を空にします.
2.dict.copy()----copyメソッドは、同じキー値ペアを持つ新しい辞書を返すために使用されます(このメソッドは浅いコピーを使用します).
x = {'username':'admin','machines':''foo','bar','baz']}
y = x.copy()
y['username'] = 'mlh'
y['machines'].remove('bar')
print y                                              {'username':'mlh','machines':['foo','baz']}
print x                                              {'username':'admin','machines':['foo','baz']}
コピーに値を置換する場合、元の辞書は影響を受けませんが、ある値(置換ではなくその場で修正)を変更すると、元の辞書も影響を受けます.
この問題を解決するには、この問題を深くコピーします.
デプスコピー(deep copy)は、含まれるすべての値をコピーします.copyのdeepcopyはこの問題を解決することができる.
from copy import deepcopy
d = {}
d['names'] = ['Alfred','Bertrand']
c = d.copy()
dc = deepcopy(d)
d['names'].append('Clive')
print c                                           {'names':['Alfred','Bertrand','Clive']}
print dc                                         {'names':['Alfred','Bertrand']}

3.dict.fromkeys(sequence[,str])------与えられた方法で新しい辞書を作成し、各キーはデフォルトの値Noneに対応します.
print dict.fromkeys(['name','age'])                               {'age':None,'name':'None'}
print dict.fromkeys(['name','key'],'(unknown)')                   {'age':'(unknown)','name':'(unknown)'}

4.dict.get(key[,str])----------keyに対応するアイテムの値を返し、存在しない場合はstrを返し、デフォルトではNoneを返します
d = {}
d['name'] = 'Eric'
print d.get('name','N/A')                                        'Eric'

5.dict.has_key(key)-----------------辞書に特定のキーが含まれていることを調べるとk in dに相当する
d = {}
d.has_key('name')                                                False
d['name'] = 'Eric'
d.has_key('name')                                                True

6.itemメソッドとiteritemメソッドは、辞書のすべてのアイテムをリストとして返します.リストの各アイテムは(キー、値)ペアの形状です.しかし、アイテムは返されるときに特定の順序に従っていません.
d = {'title':‘Python Web Site’,'url':'Http://python.org','spam':0}
print d.item()                                 [('title',‘Python Web Site’),('url','Http://python.org'),('spam',0)]
it = d.iteritem()
print it                                       [('title',‘Python Web Site’),('url','Http://python.org'),('spam',0)]

7.dict.keys()とdict.iterkeys()--------keys辞書のキーをリストで返し、dict.iterkeys()はキーの反復器を返します.
8.dict.pop(key)--------popメソッドは、所与のキーに対応する値を取得し、このキー値を辞書から削除するために使用される.
d = {'x':1,'y':2}
print d.pop('x')                                     1
print d                                                 {'y':2}

9.dict.popitem()-----------------popitemは辞書のランダムな項目をポップアップし、返されたデータはメタグループ形式で返される
d = {'url':'http://www.python.org','spam':0,'title':'Python Web Site'}
print d.popitem()                                   ('url','http://www.python.org')
print d                                             {'spam':0,'title':'Python Web Site'}

10.dict.setdefault(key,str)----------setdefaultメソッドはある程度getメソッドと似ており、setdefaultは辞書に所与のキーが含まれていない場合にも対応するキー値を設定することができ、設定しない場合はデフォルトでNoneを使用する
キーが存在しない場合、setdefaultはデフォルト値を返し、対応する辞書を更新します.キーが存在する場合は、対応する値を返しますが、辞書は変更されません.
d = {}
d.setdefault('name','N/A')
print d                                    {'name':'N/A'}
d['name'] = 'Gumby'
print d.setdefault('name','N/A') 'Gumby'
print d                                    {'name':'Gumby'}

11.dict.update(dict)
updateメソッドでは、1つの辞書を使用して別の辞書を更新できます.
d = {
         'title':'Python Web Site'
         'url':'http://www.python.org’
         'changed':'Mar 14 22:09:15 MET 2008'
}
x = {'title':'Python Language Website'}
d.update(x)
print d                    {'url':'http://www.python.org','changed':'Mar 14 22:09:15 MET 2008','title':'Python language Website'}

12.dict.keys()とdict.iterkeys()は、辞書の値(itervaluesが値を返す反復器)をリストとして返します.戻りキーのリストとは異なり、戻り値のリストに重複する要素を含めることができます.
d = {}
d[1] = 1
d[2] = 2
d[3] = 3
d[4] = 1
print d.values()                   [1,2,3,1]