Python辞書の特徴とよく使われる操作


一、辞書ヘルプ文書
>>> dir(dict)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

二、辞書の特徴
1、辞書は無秩序で、オフセットでアクセスできず、キーでしかアクセスできません.ネストできます.辞書={'key':value}key:私たちの現実の鍵に似ていますが、valueはロックです.鍵一つで鍵一つ
>>> info={'a':1,'b':2}
>>> info
{'a': 1, 'b': 2}
>>> info['a']
1

2、辞书の内部は顺番がなくて、キーを通じて内容を読んで、ネストすることができて、私达が多种のデータ构造を组织するのに便利で、しかもその場で中の内容を修正することができて、可変のタイプに属します.
>>> binfo = {'a':[1,2,3],'b':[4,5,6]}
>>> binfo
{'a': [1, 2, 3], 'b': [4, 5, 6]}
>>> binfo['a'][2]=5
>>> binfo
{'a': [1, 2, 5], 'b': [4, 5, 6]}

3、辞書を構成するキーは、数値、文字列、タプルなど、リストなどの可変オブジェクトをキーとして使用することができない可変データ型でなければならない.
>>> binfo={1:'22',2:'dd'}
>>> binfo
{1: '22', 2: 'dd'}
>>> cinfo={'22':'222','aa':11}
>>> cinfo
{'aa': 11, '22': '222'}
>>> dinfo={(1,2,3):'ss',('b','c'):'222'}
>>> dinfo
{('b', 'c'): '222', (1, 2, 3): 'ss'}

メタグループの中の要素も変えてはいけない.
>>> dinfo={(1,2,[1,3]):'ss',('b','c'):'222'}
Traceback (most recent call last):
  File "", line 1, in ?
TypeError: list objects are unhashable

三、辞書の常用操作
1、辞書を作成します.{},dict()
info = {'name':'lilei', 'age': 20}
>>> info
{'age': 20, 'name': 'lilei'}
info  = dict(name='lilei',age=20)
>>> info
{'age': 20, 'name': 'lilei'}

2、追加内容a['xx']='xx',keyが存在しない、すなわち追加
info['phone'] = 'iphone5'
>>> info
{'phone': 'iphone5', 'age': 20, 'name': 'lilei'

3、修正内容a['xx']='xx',key存在,すなわち修正
info['phone'] = 'htc'
>>> info
{'phone': 'htc', 'age': 20, 'name': 'lilei'}

updateパラメータは辞書のタイプで、同じキーの値を上書きします.
info.update({'city':'beijing','phone':'nokia'})
>>> info
{'phone': 'nokia', 'age': 20, 'name': 'lilei', 'city': 'beijing'} #htc    nokia 

4、del、clear、popを削除する
del info['phone']#要素を削除
>>> info = {'name':'lilei', 'age': 20}
>>> info.update({'city':'beijing','phone':'nokia'})
>>> info
{'city': 'beijing', 'age': 20, 'name': 'lilei', 'phone': 'nokia'}
>>> del info['city']
>>> info
{'age': 20, 'name': 'lilei', 'phone': 'nokia'}
>>> del info['city']  #        key,   
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'city'

info.clear()辞書のすべての要素を削除
>>> info.clear()
>>> info
{}

pop指定したkeyを削除
>>> info = {'name':'lilei', 'age': 20}
>>> info
{'age': 20, 'name': 'lilei'}

 
>>> info.pop('name') #  key name   ,   key   value
'lilei'
>>> info
{'age': 20}
>>> info.pop('name')  #        key,   
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'name'
>>> info.pop('name','defalutValue') #key   ,      'defalutValue'
'defalutValue'
>>> info
{'age': 20}

5、辞書のpopメソッドとlistのpopメソッドの違い、辞書のpopが存在しないkeyを削除する場合、デフォルト値を指定できます
>>> l=[1,2,3,4]
>>> l.pop() #     ,  pop      
4
>>> l
[1, 2, 3]
>>> l.pop(2) #            
3
>>> l.pop(2) #           
Traceback (most recent call last):
  File "", line 1, in 
IndexError: pop index out of range

6、inとhas_key()メンバー関係操作
>>> info = {'name':'lilei', 'age': 20}
>>> info
{'age': 20, 'name': 'lilei'}
>>> 'name' in info
True
>>> info.has_key('name')
True

7、keys():辞書のすべてのキーを含むリストを返します.
values():辞書のすべての値を含むリストを返します.
items:辞書を生成するコンテナ:[()]
>>> info = {'name':'lilei', 'age': 20}
>>> key=info.keys()
>>> key
['age', 'name']
>>> values=info.values()
>>> values
[20, 'lilei']
>>> info.items()
[('age', 20), ('name', 'lilei')]

8、get:辞書から値を取得する
>>> info = {'name':'lilei', 'age': 20}
>>> info
{'age': 20, 'name': 'lilei'}
>>> info.get('name')
'lilei'
>>> b=info.get('age21') #       key,   NoneType
>>> type(b)
>>> info.get('age2','22')#       key,           
'22'

練習:
既知の辞書:ainfo={'ab':'liming','ac':20}
次の操作を完了します.
1 2つのメソッドを使用して、出力された結果:
ainfo = {'ab':'liming','ac':20,'sex':'man','age':20}
>>> ainfo = {'ab':'liming','ac':20}
>>> ainfo['sex']='man'
>>> ainfo['age']=20
>>> ainfo
{'ac': 20, 'ab': 'liming', 'age': 20, 'sex': 'man'}
>>> ainfo.update({'sex':'man','age':20})
>>> ainfo
{'ac': 20, 'ab': 'liming', 'age': 20, 'sex': 'man'}
2出力結果:['ab','ac']
>>> ainfo.keys()[0:2]
['ac', 'ab']
3出力結果:['liming',20]
4キー名abに対応する値を2つの方法で返す.
5キー名acに対応する値を2つの方法で削除します.