python辞書のまとめ

106098 ワード

辞書はカッコを使用します.辞書のキー値は一意の値です.たとえば、
a={1:'a',2:'b',3:'c'}
dict関数を使用して、シーケンスに辞書を作成できます.

    
    
    
    
>>> a=[(1,2),('a','b')]
>>> b=dict(a)
>>> b
{'a': 'b', 1: 2}

     
     
     
     
>>> b=dict(a='b',age='2')
>>> b
{'a': 'b', 'age': '2'}
>>> b=dict
>>> b
<type 'dict'>
>>> b=dict()
>>> b
{}

一.辞書の基本操作
len辞書の長さを返す
d[k]はキー値kに対応する値を返し、kが存在しない場合は異常KeyErrorを返す.
d[k]=v v vはvの値をkに割り当て、kの値が存在しない場合は新しいキーを作成する
del d[k]削除キーk
k in dキーkが辞書にあるかどうかをチェックする
二.辞書のフォーマット出力
辞書のフォーマットには、文字列のようなフォーマットを使用するほか、次のこともできます.
変換説明子%の後にキー値を付けてかっこで囲み、他の説明に従います.

    
    
    
    
>>> b={'1':'a'}
>>> print 'the first number in b is :%(1)s' % b
the first number in b is :a

三.ディクショナリメソッド
1.clear
clearメソッド辞書のすべてのアイテムを消去

    
    
    
    
>>> b
{'1': 'a', '3': 'c', '2': 'b'}
>>> b.clear()
>>> b
{}

次の状況に注意してください.

     
     
     
     
>>> b={'1': 'a', '2': 'b'}
>>> a=b
>>> a
{'1': 'a', '2': 'b'}
>>> b={}
>>> b
{}
>>> a
{'1': 'a', '2': 'b'}

この場合aの辞書は空になっていないのでclearを使って空にする必要があります.
2.copy
copyメソッドは、コピーではなく値自体が同じであるため、同じキー値を持つ新しい辞書を返します.すなわち、この辞書のキーに対応する値はコピーではなく、元の辞書と同じであり、コピーではありません.
たとえば、辞書の値がリストであり、リストのremoveでリストの値を削除すると、コピーされた辞書も削除されます.

    
    
    
    
>>> b={'1':'a','2':['x','y','z']}
>>> b
{'1': 'a', '2': ['x', 'y', 'z']}
>>> a=b.copy()
>>> a
{'1': 'a', '2': ['x', 'y', 'z']}
>>> b['2'].remove('x')
>>> b
{'1': 'a', '2': ['y', 'z']}
>>> a
{'1': 'a', '2': ['y', 'z']}

この問題を回避するには、深いレプリケーションを使用し、含まれる値をレプリケーションし、copyモジュールのdeepcopy関数を使用して完了します.

    
    
    
    
>>> b
{'1': 'a', '2': ['y', 'z']}
>>> a=copy.deepcopy(b)
>>> a
{'1': 'a', '2': ['y', 'z']}
>>> a['2'].remove('y')
>>> a
{'1': 'a', '2': ['z']}
>>> b
{'1': 'a', '2': ['y', 'z']}

3.fromkeys
fromkeysメソッドは、指定されたキーを使用して新しい辞書を作成し、各キーはデフォルト値Noneに対応します.

    
    
    
    
>>> dict.fromkeys('name','age')
{'a': 'age', 'e': 'age', 'm': 'age', 'n': 'age'}
>>> dict.fromkeys(['name','age'])
{'age': None, 'name': None}
>>> dict.fromkeys(['a','b','c'],[x for x in range(3)])
{'a': [0, 1, 2], 'c': [0, 1, 2], 'b': [0, 1, 2]}

4.get
getメソッドはより緩やかな辞書へのアクセス方法です.
デフォルトでは、アクセスした辞書キーが存在しない場合、エラーは発生せず、None値が返されます.
getにキーが1つも存在しない場合の戻り値をカスタマイズできます.

    
    
    
    
>>> b
{'a': [0, 1, 2], 'c': [0, 1, 2], 'b': [0, 1, 2]}
>>> b['d']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'd'
>>> b.get('d')
>>> b.get('d','NOT EXIST')
'NOT EXIST'

5.has_key
has_keyメソッドは辞書に特定のキーが含まれているかどうかをチェックします.これはk in dと同じです.python 3.0この関数は含まれません

    
    
    
    
>>> b
{'a': [0, 1, 2], 'c': [0, 1, 2], 'b': [0, 1, 2]}
>>> b.has_key('a')
True
>>> if b.has_key('a'):
... print 'yes'
... else:
... print 'no'
...
yes
>>>
>>> if 'a' in b:
... print 'yes'
... else:
... print 'no'
...
yes
>>>

6.itemsとiteritems
itemsメソッドは辞書のすべての項目をリストで返し、dictの逆プロセスのように感じます.

    
    
    
    
>>> a=[('1','a'),('2','b')]
>>> b=dict(a)
>>> b
{'1': 'a', '2': 'b'}
>>> c=b.items()
>>> c
[('1', 'a'), ('2', 'b')]

iteritemsメソッドはほぼ同じですが、反復オブジェクトが返されます.
多くの場合iteritemsはより効率的で、特に反復が必要な場合

    
    
    
    
>>> b
{'1': 'a', '2': 'b'}
>>> c=b.iteritems()
>>> c
<dictionary-itemiterator object at 0x026097B0>

7.keysとiterkeys
keysメソッドは辞書のキーをリストで返し、iterkeysは反復器のメソッドで返します.

    
    
    
    
>>> b
{'1': 'a', '2': 'b'}
>>> c=b.keys()
>>> c
['1', '2']
>>> c=b.iterkeys()
>>> c
<dictionary-keyiterator object at 0x02609750>

8.valueとitervalues
valuesメソッドは辞書の値をリストで返し、itervaluesは反復器を返します.戻りキーとは異なり、戻り値に重複する要素がある可能性があります.

     
     
     
     
>>> b
{'1': 'a', '3': 'c', '2': 'b', '4': 'x'}
>>> b.values()
['a', 'c', 'b', 'x']

9.pop
popメソッドは、所与のキーの値を取得し、辞書から削除するために使用されます.
これはリストとは異なり、デフォルトで値を書かないと最後の項目がポップアップされ、キーを書かなければなりません.

    
    
    
    
>>> b
{'1': 'a', '2': 'b'}
>>> b.pop()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 arguments, got 0
>>> b.pop('1')
'a'
>>> b
{'2': 'b'}

10.popitem
popitemはlistに似ていますポップ、違うのはpopitemがポップアップしたのはランダムキーで、全部弾けるまで、
次から次へとプロジェクトを処理したいなら、popitemでぴったり!

    
    
    
    
>>> b
{'1': 'a', '3': 'c', '2': 'b', '4': 'd'}
>>> b.popitem()
('1', 'a')
>>> b
{'3': 'c', '2': 'b', '4': 'd'}
>>> b.popitem()
('3', 'c')
>>> b
{'2': 'b', '4': 'd'}
>>> b.popitem()
('2', 'b')
>>> b
{'4': 'd'}
>>> b.popitem()
('4', 'd')
>>> b
{}
>>> b.popitem()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'popitem(): dictionary is empty'
>>>

11.setdefault
setdefaultメソッドはgetメソッドと同様に、所与のキーの値を取得できます.また、辞書のキーの値が存在しない場合は、設定できます.

    
    
    
    
>>> d={}
>>> d.setdefault('name','N/A')
'N/A'
>>> d
{'name': 'N/A'}
>>> d['name']='bob'
>>> d
{'name': 'bob'}
>>> d.setdefault('name','N/A')
'bob'
>>> d
{'name': 'bob'}
>>>

12.update
updateメソッドでは、1つの辞書項目を使用して別の辞書を更新できます.

    
    
    
    
>>> b
{'1': 'a', '3': 'c', '2': 'b', '4': 'd'}
>>> a
{'4': 'x'}
>>> b.update(a)
>>> b
{'1': 'a', '3': 'c', '2': 'b', '4': 'x'}