Python 辞書
パイソン辞書
このチュートリアルでは、Python 辞書に関するすべてを学びます。要素の作成方法、要素へのアクセス、要素の追加、要素の削除、およびさまざまな組み込みメソッド。
ビデオ:キーと値のペアを保存する Python 辞書
Python ディクショナリは、順序付けされていないアイテムのコレクションです。辞書の各項目には key/value
があります ペア。
辞書は、キーがわかっている場合に値を取得するように最適化されています。
Python 辞書の作成
辞書の作成は、項目を中括弧 {}
内に配置するのと同じくらい簡単です。 カンマで区切ります。
アイテムに key
があります および対応する value
ペア (key:value ).
値は任意のデータ型にすることができ、繰り返すことができますが、キーは不変型 (文字列、数値、または不変要素を含むタプル) である必要があり、一意である必要があります。
# empty dictionary
my_dict = {}
# dictionary with integer keys
my_dict = {1: 'apple', 2: 'ball'}
# dictionary with mixed keys
my_dict = {'name': 'John', 1: [2, 4, 3]}
# using dict()
my_dict = dict({1:'apple', 2:'ball'})
# from sequence having each item as a pair
my_dict = dict([(1,'apple'), (2,'ball')])
上記からわかるように、組み込みの dict()
を使用して辞書を作成することもできます 関数。
辞書からの要素へのアクセス
インデックスは値にアクセスするために他のデータ型で使用されますが、ディクショナリは keys
を使用します .キーは角かっこ []
内のいずれかで使用できます または get()
メソッド。
角括弧 []
を使用する場合 、 KeyError
ディクショナリでキーが見つからない場合に発生します。一方、get()
は メソッドは None
を返します キーが見つからない場合
# get vs [] for retrieving elements
my_dict = {'name': 'Jack', 'age': 26}
# Output: Jack
print(my_dict['name'])
# Output: 26
print(my_dict.get('age'))
# Trying to access keys which doesn't exist throws error
# Output None
print(my_dict.get('address'))
# KeyError
print(my_dict['address'])
出力
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'
辞書要素の変更と追加
辞書は変更可能です。代入演算子を使用して、新しいアイテムを追加したり、既存のアイテムの値を変更したりできます。
キーがすでに存在する場合、既存の値が更新されます。キーが存在しない場合は、新しい (キー:値 ) ペアが辞書に追加されます。
# Changing and adding Dictionary Elements
my_dict = {'name': 'Jack', 'age': 26}
# update value
my_dict['age'] = 27
#Output: {'age': 27, 'name': 'Jack'}
print(my_dict)
# add item
my_dict['address'] = 'Downtown'
# Output: {'address': 'Downtown', 'age': 27, 'name': 'Jack'}
print(my_dict)
出力
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}
辞書からの要素の削除
pop()
を使用して、辞書内の特定の項目を削除できます。 方法。このメソッドは、指定された key
を持つアイテムを削除します value
を返します .
popitem()
メソッドを使用して、任意の (key, value)
を削除して返すことができます ディクショナリのアイテム ペア。 clear()
を使用して、すべてのアイテムを一度に削除できます メソッド。
del
も使用できます 個々の項目または辞書全体を削除するキーワード
# Removing elements from a dictionary
# create a dictionary
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# remove a particular item, returns its value
# Output: 16
print(squares.pop(4))
# Output: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# remove an arbitrary item, return (key,value)
# Output: (5, 25)
print(squares.popitem())
# Output: {1: 1, 2: 4, 3: 9}
print(squares)
# remove all items
squares.clear()
# Output: {}
print(squares)
# delete the dictionary itself
del squares
# Throws Error
print(squares)
出力
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined
Python 辞書メソッド
ディクショナリで使用できるメソッドを以下に示します。それらのいくつかは、上記の例で既に使用されています。
メソッド | 説明 |
---|---|
clear() | 辞書からすべての項目を削除します。 |
copy() | 辞書の浅いコピーを返します。 |
fromkeys(seq[, v]) | seq のキーを持つ新しい辞書を返します v に等しい値 (デフォルトは None ). |
get(key[,d]) | キーの値を返します . キー 存在しません。d を返します (デフォルトは None ). |
items() | 辞書の項目の新しいオブジェクトを (キー、値) 形式で返します。 |
keys() | 辞書のキーの新しいオブジェクトを返します。 |
pop(key[,d]) | キーでアイテムを削除します その値または d を返します キーの場合 見つかりません。 dの場合 は提供されず、キー が見つからない場合、KeyError が発生します . |
popitem() | 任意のアイテム (キー、値) を削除して返します )。 KeyError を上げる 辞書が空の場合 |
setdefault(key[,d]) | キーの場合、対応する値を返します は辞書にあります。そうでない場合は、キー を挿入します d の値で d を返します (デフォルトは None ). |
update([その他]) | other からのキーと値のペアで辞書を更新します 、既存のキーを上書きします。 |
values() | 辞書の値の新しいオブジェクトを返します |
これらの方法の使用例をいくつか示します。
# Dictionary Methods
marks = {}.fromkeys(['Math', 'English', 'Science'], 0)
# Output: {'English': 0, 'Math': 0, 'Science': 0}
print(marks)
for item in marks.items():
print(item)
# Output: ['English', 'Math', 'Science']
print(list(sorted(marks.keys())))
出力
{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']
Python 辞書内包表記
辞書内包表記は、Python で iterable から新しい辞書を作成するエレガントで簡潔な方法です。
辞書内包表記は、式のペア (キー:値) で構成されます ) の後に for
が続きます 中括弧 {}
内のステートメント .
以下は、各項目が数字とその二乗のペアである辞書を作成する例です。
# Dictionary Comprehension
squares = {x: x*x for x in range(6)}
print(squares)
出力
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
このコードは
と同等です
squares = {}
for x in range(6):
squares[x] = x*x
print(squares)
出力
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
辞書内包表記には、必要に応じて for または if ステートメントをさらに含めることができます。
オプションの if
ステートメントは項目を除外して新しい辞書を作成できます。
奇数項目のみで辞書を作成する例をいくつか示します。
# Dictionary Comprehension with if conditional
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)
出力
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
辞書内包表記の詳細については、Python Dictionary Comprehension を参照してください。
その他の辞書操作
辞書メンバーシップ テスト
key
かどうかをテストできます 辞書にあるか、キーワード in
を使用していません .メンバーシップ テストは keys
のみであることに注意してください。 values
用ではありません .
# Membership Test for Dictionary Keys
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Output: True
print(1 in squares)
# Output: True
print(2 not in squares)
# membership tests for key only not value
# Output: False
print(49 in squares)
出力
True True False
辞書の繰り返し
for
を使用して、辞書内の各キーを反復処理できます ループ。
# Iterating through a Dictionary
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
出力
1 9 25 49 81
辞書組み込み関数
all()
などの組み込み関数 、 any()
、 len()
、 cmp()
、 sorted()
などは、さまざまなタスクを実行するために辞書で一般的に使用されます。
関数 | 説明 |
---|---|
all() | True を返す 辞書のすべてのキーが True の場合 (または辞書が空の場合)。 |
any() | True を返す 辞書のいずれかのキーが true の場合。辞書が空の場合、False を返します . |
len() | 辞書の長さ (項目数) を返します。 |
cmp() | 2 つの辞書の項目を比較します。 (Python 3 では利用できません) |
sorted() | 辞書内のキーの新しいソート済みリストを返します。 |
組み込み関数を使用して辞書を操作する例をいくつか示します。
# Dictionary Built-in Functions
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Output: False
print(all(squares))
# Output: True
print(any(squares))
# Output: 6
print(len(squares))
# Output: [0, 1, 3, 5, 7, 9]
print(sorted(squares))
出力
False True 6 [0, 1, 3, 5, 7, 9]
Python