Pythonの辞書キーに関する2つの重要なルールとは?
Pythonの辞書(dict)において、値(value)には一切の制限がありません。標準オブジェクトでもユーザー定義オブジェクトでも、任意のPythonオブジェクトを格納できます。
しかし、キー(key)については話が別です。辞書のキーには、以下の2つの重要なルールがあります。
ルール1:同じキーを複数持つことはできない
辞書では、1つのキーに対して複数のエントリを持つことができません。つまり、重複したキーは許可されていません。
もし代入時に重複したキーが現れた場合、最後に代入された値が優先されます。
コード例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print("dict['Name']:", dict['Name'])実行結果
dict['Name']: Manni
この例では、キー 'Name' が2回登場しています。そのため、最初に代入された 'Zara' ではなく、後から代入された 'Manni' が出力されます。
ルール2:キーはイミュータブル(変更不可能)である必要がある
辞書のキーはイミュータブル(不変)でなければなりません。具体的には、以下のような型をキーとして使用できます。
- 文字列(str)
- 数値(int、floatなど)
- タプル(tuple)
一方、リストのようなミュータブル(変更可能)なオブジェクトは、キーとして使用できません。
コード例
#!/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: unhashable type: 'list'このように、リストをキーとして使おうとすると TypeError: unhashable type: 'list' というエラーが発生します。これは、リストがハッシュ化できない(unhashable)型であるためです。
まとめ
- 辞書の値には制限がないが、キーには制約がある
- 重複したキーは許されず、最後に代入された値が有効になる
- キーには文字列・数値・タプルなどのイミュータブルな型を使う
- リストなどのミュータブルな型はキーにできない
-
Pythonの辞書(dict)に新しいキーと値を追加する方法
Pythonの辞書に新しいキーを追加する基本 Pythonの辞書(dict)は、キーと値のペアを格納するコレクションです。リストのような位置インデックスではなく、各要素はキーによって識別されます。また、同じキーを重複して持つことはできません。 そのため、新しいキー・値のペアを追加するのは非常に簡単です。存在しない新しいキーを指定し、そこに値を代入するだけで、自動的に新しいペアが辞書に追加されます。 コード例 >>> D1 = {1: a, 2: b, 3: c, x: 1, y: 2, z: 3} >>> D1[10] = z >>> D1
-
Pythonで辞書をキー順に並べ替える方法【OrderedDictとsorted()の使い方】
Pythonで辞書(dict)の要素をキーの順序に従って並べ替えたい場面はよくあります。この記事では、標準ライブラリのcollectionsモジュールに含まれるOrderedDictと、組み込み関数sorted()を組み合わせて、辞書をキー順にソートする方法を解説します。 OrderedDictとは Pythonの標準ディストリビューションには、高性能なコンテナデータ型を定義したcollectionsモジュールが含まれています。その中のOrderedDictは、辞書のサブクラスであり、要素が追加された順序を記憶する特徴を持っています。OrderedDictをイテレートすると、キーが最初に追加さ