Top / Programming / Python / Python Tips / 辞書オブジェクトの使い方

辞書オブジェクトの使い方

辞書オブジェクトの作成

辞書オブジェクトは「{ キー : 値, … }」の形で作成します。

# 例
dic = {'name':'Taro', 'age': 26]
# 空の辞書
dic = {}

値の取得

値を取得するには「辞書オブジェクト[キー]」を使います。
キーが存在しない場合はKeyErrorの例外が送出されます。

>>> dic = {'name':'Taro', 'age':26}
>>> dic['name']
'Taro'
>>> dic['sex']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'sex'

「辞書オブジェクト.get(キー, 値)」は、キーが登録されている場合は「辞書オブジェクト[キー]」を返します。
キーが登録されていない場合は、値を返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.get('name', 'Hanako')
'Taro'
>>> dic.get('sex', 'man')
'man'

要素の追加・変更

「辞書オブジェクト[キー] = 値」で要素を追加します。
すでにキーが登録されているときは、値を変更します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic['sex'] = 'man' #追加した
>>> dic
{'age': 26, 'name': 'Taro', 'sex': 'man'}
>>> dic['sex'] = 'woman' #変更した
>>> dic
{'age': 26, 'name': 'Taro', 'sex': 'woman'}

キーが存在しない場合に値を設定する場合は、「辞書オブジェクト.setdefault(キー, 値)」を使用します。
キーが存在する場合は、値は変更されずに、「辞書オブジェクト[キー]」を返します。
キーが存在しない場合は、値を設定して、その値を返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.setdefault('name', 'Hanako')
'Taro'
>>> dic.setdefault('sex', 'man')
'man'
>>> dic
{'age': 26, 'name': 'Taro', 'sex': 'man'}

なお、「辞書オブジェクト.get(キー、値)」は、値を設定しません。

要素の削除

要素を削除するには「del(辞書オブジェクト[キー])」を使います。

>>> dic
{'age': 26, 'name': 'Taro', 'sex': 'woman'}
>>> del(dic['sex'])
>>> dic
{'age': 26, 'name': 'Taro'}

すべての要素を削除するには「辞書オブジェクト.clear()」を使います。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.clear()
>>> dic
{}

「辞書オブジェクト.pop(キー, 値)」はキーの要素を削除します。
キーの要素が存在するときは、辞書オブジェクト[キー]を返します。
キーの要素が存在しないときは、値を返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.pop('sex', 'man')
'man'
>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.pop('name', 'Hanako')
'Taro'
>>> dic
{'age': 26}

「辞書オブジェクト.popitem()」は要素を削除し、削除した要素のタプルを返します。

>>> dic = {'name':'Taro', 'age':26}
>>> dic.popitem()
('age', 26)
>>> dic
{'name': 'Taro'}
>>> dic.popitem()
('name', 'Taro')
>>> dic

キー一覧の取得

キーの一覧を取得するには「辞書オブジェクト.keys()」を使います。
キーのリストを返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.keys()
['age', 'name']

値一覧の取得

値の一覧を取得するには「辞書オブジェクト.values()」を使います。
値のリストを返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.values()
[26, 'Taro']

キーと値の一覧を取得

キーと値の一覧を取得するには、「辞書オブジェクト.items()」を使います。
キーと値のペアのタプルをリストで取得します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.items()
[('age', 26), ('name', 'Taro')]

キーの有無

キーが登録されているかどうかを調べるには「辞書オブジェクト.has_key(キー)」を使います。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic.items()
[('age', 26), ('name', 'Taro')]
>>> dic.has_key('name')
True
>>> dic.has_key('age')
True
>>> dic.has_key('sex')
False

「辞書オブジェクト.has_key」の代わりに「キー in 辞書オブジェクト」を使うこともできます。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> 'age' in dic
True
>>> 'sex' in dic
False

「キー not in 辞書オブジェクト」は「not キー in 辞書オブジェクト」と同じです。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> 'sex' not in dic
True
>>> not 'sex' in dic
True

要素の数

辞書オブジェクトの要素の数は「len(辞書オブジェクト)」で取得できます。

>>> dic = {'name':'Taro', 'age':26}
>>> len(dic)
2

連結

「辞書オブジェクト.update(other)」は、otherの内容を辞書オブジェクトに追加します。
キーが重複する場合は、otherの内容で上書きされます。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> opt = {'sex':'man', 'job':'teacher', 'sex':'woman'}
>>> dic.update(opt)
>>> dic
{'job': 'teacher', 'age': 26, 'name': 'Taro', 'sex': 'woman'}

コピー

辞書の複製を作成するには「辞書オブジェクト.copy()」を使用します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic2 = dic.copy()
>>> dic2
{'age': 26, 'name': 'Taro'}
>>> dic2['sex'] = 'man'
>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic2
{'age': 26, 'name': 'Taro', 'sex': 'man'}

「dict(辞書オブジェクト)」も複製を作成します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> dic2 = dict(dic)
>>> dic2
{'age': 26, 'name': 'Taro'}
>>> dic['sex'] = 'man'
>>> dic
{'age': 26, 'name': 'Taro', 'sex': 'man'}
>>> dic2
{'age': 26, 'name': 'Taro'}

要素を取得するイテレータ

「辞書オブジェクト.iteritems()」はキーと値のペアのタプルのイテレータを返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> for k,v in dic.iteritems():
...     print k,'=',v
...
age = 26
name = Taro

キーを取得するイテレータ

「辞書オブジェクト.iterkeys()」はキーのイテレータを返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> for k in dic.iterkeys():
...     print k
...
age
name

値を取得するイテレータ

「辞書オブジェクト.itervalues()」は値のイテレータを返します。

>>> dic
{'age': 26, 'name': 'Taro'}
>>> for v in dic.itervalues():
...     print v
...
26
Taro

更新履歴