Contents
Pythonディクショナリ
各キーはコロン(:)で区切られ、項目はコンマで区切られ、全体が中括弧で囲まれています。キーは辞書内で一意であり、値はそうではない可能性があります。ディクショナリの値はどのような型でも構いませんが、キーは文字列、数値、タプルなどの不変のデータ型でなければなりません。
辞書の値へのアクセス:
ディクショナリ要素にアクセスするには、おなじみの角カッコをキーと一緒に使用して値を取得します。以下は簡単な例です –
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'B組'} print "dict['Name']: ", dict['Name'] print "dict['Age']: ", dict['Age']
上記のコードを実行すると、次の結果が生成されます。
名前はザラ 年は7歳 クラスはB組です
dict['Name']: Zara dict['Age']: 7
辞書の一部ではないキーを持つデータ項目にアクセスしようとすると、次のようなエラーが発生します。
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} print "dict['Alice']: ", dict['Alice']
上記のコードを実行すると、次の結果が生成されます。
dict['Alice']: Traceback (most recent call last): File "test.py", line 4, in <module> print "dict['Alice']: ", dict['Alice']; KeyError: 'Alice'
辞書の更新
以下の簡単な例に示すように、新しいエントリやキーと値のペアを追加したり、既存のエントリを変更したり、既存のエントリを削除したりして、辞書を更新することができます。
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'} dict['Age'] = 8; # update existing entry dict['School'] = "DPS School"; # Add new entry print "dict['Age']: ", dict['Age'] print "dict['School']: ", dict['School']
上記のコードを実行すると、次の結果が生成されます。
dict['Age']: 8 dict['School']: DPS School
辞書要素を削除する
個々の辞書要素を削除することも、辞書の内容全体を消去することもできます。1回の操作で辞書全体を削除することもできます。
明示的に辞書全体を削除するには、delステートメントを使用します。以下は簡単な例です –
#!/usr/bin/python dict = {'Name': '健太', 'Age': 7, 'Class': 'First'} del dict['Name']; # remove entry with key 'Name' dict.clear(); # remove all entries in dict del dict ; # delete entire dictionary print "dict['Age']: ", dict['Age'] print "dict['School']: ", dict['School']
これにより、次の結果が得られます。del dict辞書がもう存在しないために例外が発生することに注意してください。
dict['Age']: Traceback (most recent call last): File "test.py", line 8, in <module> print "dict['Age']: ", dict['Age']; TypeError: 'type' object is unsubscriptable
注意: del()メソッドについては、以降のセクションで説明します。
辞書キーのプロパティ
ディクショナリ値には制限はありません。任意のPythonオブジェクト(標準オブジェクトまたはユーザ定義オブジェクト)にすることができます。しかし、キーについても同じではありません。
辞書キーについて覚えておくべき2つの重要なポイントがあります。
(a)キーごとに複数のエントリが許可されていない。つまり、重複するキーは使用できません。割り当て中に重複したキーが検出されると、最後の割り当てが優先されます。たとえば –
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'} print "dict['Name']: ", dict['Name']
上記のコードを実行すると、次の結果が生成されます。
dict['Name']: Manni
(b)鍵は不変でなければならない。つまり、文字列、数字、またはタプルを辞書キーとして使用できますが、[‘key’]のようなものは使用できません。以下に簡単な例を示します。
#!/usr/bin/python dict = {['Name']: 'Zara', 'Age': 7} print "dict['Name']: ", dict['Name']
上記のコードを実行すると、次の結果が生成されます。
Traceback (most recent call last): File "test.py", line 3, in <module> dict = {['Name']: 'Zara', 'Age': 7}; TypeError: list objects are unhashable
組み込みのディクショナリの関数とメソッド –
Pythonには以下の辞書関数が含まれています –
説明付きの関数 | |
---|---|
1 | cmp(dict1、dict2)
両方の要素を比較します。 #!/usr/bin/python dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = {'Name': 'Mahnaz', 'Age': 27}; dict3 = {'Name': 'Abid', 'Age': 27}; dict4 = {'Name': 'Zara', 'Age': 7}; print "Return Value : %d" % cmp (dict1, dict2) print "Return Value : %d" % cmp (dict2, dict3) print "Return Value : %d" % cmp (dict1, dict4) 上記のプログラムを実行すると、次の結果が生成されます。 Return Value : -1 Return Value : 1 Return Value : 0 |
2 | len(dict)
辞書の全長を指定します。これは、辞書内の項目の数と等しくなります。 #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7}; print "Length : %d" % len (dict) 上記のプログラムを実行すると、次の結果が生成されます。 Length : 2 |
3 | str(dict)
辞書の印刷可能な文字列表現を生成します。 #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7}; print "Equivalent String : %s" % str (dict) 上記のプログラムを実行すると、次の結果が生成されます。 Equivalent String : {'Age': 7, 'Name': 'Zara'} |
4 | type(変数)
渡された変数の型を返します。渡された変数が辞書の場合、辞書型を返します。 #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7}; print "Variable Type : %s" % type (dict) 上記のプログラムを実行すると、次の結果が生成されます。 Variable Type : <type 'dict'> |
Pythonには以下の辞書メソッドが含まれています –
SN | 説明付きのメソッド |
---|---|
1 | dict.clear()
dictionary dictのすべての要素を削除します。 #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7}; print "Start Len : %d" % len(dict) dict.clear() print "End Len : %d" % len(dict) 上記のプログラムを実行すると、次の結果が生成されます。 Start Len : 2 End Len : 0 |
2 | dict.copy()
辞書dictの浅いコピーを返します。 #!/usr/bin/python dict1 = {'Name': 'Zara', 'Age': 7}; dict2 = dict1.copy() print "New Dictinary : %s" % str(dict2) 上記のプログラムを実行すると、次の結果が生成されます。 New Dictinary : {'Age': 7, 'Name': 'Zara'} |
3 | dict.fromkeys()
seqのキーと値をvalueに設定して新しい辞書を作成します。 #!/usr/bin/python seq = ('name', 'age', 'sex') dict = dict.fromkeys(seq) print "New Dictionary : %s" % str(dict) dict = dict.fromkeys(seq, 10) print "New Dictionary : %s" % str(dict) 上記のプログラムを実行すると、次の結果が生成されます。 New Dictionary : {'age': None, 'name': None, 'sex': None} New Dictionary : {'age': 10, 'name': 10, 'sex': 10}
|
4 | dict.get(key、default = None)
以下のためのキー、キー、キーではない辞書であれば値またはデフォルト値を返します。 #!/usr/bin/python dict = {'Name': 'Zabra', 'Age': 7} print "Value : %s" % dict.get('Age') print "Value : %s" % dict.get('Education', "Never") 上記のプログラムを実行すると、次の結果が生成されます。 Value : 7 Value : Never |
5 | dict.has_key(key)
#!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.has_key('Age') print "Value : %s" % dict.has_key('Sex') 上記のプログラムを実行すると、次の結果が生成されます。 Value : True Value : False |
6 | dict.items()
dictの(キー、値)タプルのペアのリストを返します #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.items() 上記のプログラムを実行すると、次の結果が生成されます。 Value : [('Age', 7), ('Name', 'Zara')] |
7 | dict.keys()
辞書の辞書のキーのリストを返す #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.keys() 上記のプログラムを実行すると、次の結果が生成されます。 Value : ['Age', 'Name'] |
8 | dict.setdefault(key、default = None)
get()と同様ですが、キーがdictにない場合はdict [key] = defaultに設定されます #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.setdefault('Age', None) print "Value : %s" % dict.setdefault('Sex', None) 上記のプログラムを実行すると、次の結果が生成されます。 Value : 7 Value : None |
9 | dict.update(dict2)
辞書dict2のキーと値のペアをdictに追加する #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} dict2 = {'Sex': 'female' } dict.update(dict2) print "Value : %s" % dict 上記のプログラムを実行すると、次の結果が生成されます。 Value : {'Age': 7, 'Name': 'Zara', 'Sex': 'female'} |
10 | dict.values()
辞書のリストを返します #!/usr/bin/python dict = {'Name': 'Zara', 'Age': 7} print "Value : %s" % dict.values() 上記のプログラムを実行すると、次の結果が生成されます。 Value : [7, 'Zara'] |
次のページ⑭