Pythonの辞書型(dict)は、データをキーと値のペアとして格納するための非序幅のデータ型です。この辞書型を利用することで、データを効率的に管理し、変更しやすくすることが可能になります。この記事では、Pythonの辞書型に関する基礎から実践的な使い方までを解説します。
辞書型(dict)とは何か
Pythonの辞書型は、キーと値のペアを格納する構造です。下記は基本的な辞書の例です:
d = {
'Name': 'Angel',
'Country': 'Germany',
'Profession': 'Chancellor',
'Age': 64
}
print(type(d)) # <class 'dict'>
上記のコードでは、「Name」や「Country」などのキーに対して「Angel」や「Germany」といった値が割り当てられています。
辞書の値を取得する
辞書の値を取得するのは極めて簡単です。キーを指定して値を取得します:
print(d['Name'], d['Age']) # Angel 64
記録されている各キーに対して、値を表示できます。
辞書のキーリストや値のリストを取得する
辞書のキーと値を簡単に取得できます:
print(d.keys()) # dict_keys(['Name', 'Country', 'Profession', 'Age'])
print(d.values()) # dict_values(['Angel', 'Germany', 'Chancellor', 64])
print(d.items()) # dict_items([('Name', 'Angel'), ('Country', 'Germany'), ('Profession', 'Chancellor'), ('Age', 64)])
これらは、辞書の全キー、値、およびペアを取得するのに役立ちます。
値の更新と追加
辞書の値は簡単に更新や追加が可能です:
birthday = True
if birthday:
d['Age'] += 1
print(d['Age']) # 65
新しいキーと値を追加することも可能です:
d['Hobby'] = 'Reading'
print(d) # 追加された辞書を表示
ループで辞書を運用する
辞書の全要素をループで変更したり、表示したりすることも可能です:
for key, value in d.items():
print(f'{key}: {value}')
値のタイプを調べることも可能です:
for value in d.values():
print(type(value))
Python辞書型の応用編
ここまででPythonの辞書型の基本操作について理解できたと思います。このセクションでは、辞書型を使った応用的なテクニックを紹介していきます。
ネストされた辞書の操作
辞書型は他の辞書を値として持つことができ、これをネストされた辞書と呼びます。ネストされた辞書を操作することで、複雑なデータ構造を簡単に管理することができます。
ネストされた辞書の例
students = {
'001': {
'Name': 'Alice',
'Age': 20,
'Grades': {'Math': 90, 'Science': 85}
},
'002': {
'Name': 'Bob',
'Age': 22,
'Grades': {'Math': 75, 'Science': 95}
}
}
# AliceのMathのスコアにアクセス
print(students['001']['Grades']['Math']) # 出力: 90
ネストされた辞書の更新
ネストされた辞書の特定の値を更新することも簡単です。
# BobのScienceのスコアを更新
students['002']['Grades']['Science'] = 98
print(students['002']['Grades']['Science']) # 出力: 98
辞書の内包表記
リスト内包表記のように、辞書も内包表記を使って簡潔に作成できます。
辞書内包表記の例
# 数字とその平方をキーと値として持つ辞書を作成
squares = {x: x ** 2 for x in range(1, 6)}
print(squares)
# 出力: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
条件付き内包表記
条件を追加することで、特定の要素のみを辞書に含めることができます。
# 偶数のみを含む辞書を作成
even_squares = {x: x ** 2 for x in range(1, 11) if x % 2 == 0}
print(even_squares)
# 出力: {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}
辞書を使った実用例
辞書型を活用することで、実際のプロジェクトやプログラムでも効率的なコードを書くことができます。
1. データのグループ化
辞書は、同じカテゴリに属するデータをグループ化するのに便利です。
# 商品とその価格を格納した辞書
products = {
'Apple': 120,
'Banana': 80,
'Orange': 150
}
# 商品の価格を検索
print(products['Apple']) # 出力: 120
2. 単語の出現回数を数える
Pythonの辞書型を使うと、テキスト中の単語出現回数を簡単にカウントできます。
text = "apple banana apple orange apple banana"
words = text.split()
word_count = {}
for word in words:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
print(word_count)
# 出力: {'apple': 3, 'banana': 2, 'orange': 1}
3. データの変換
リストやタプルを辞書に変換するのも簡単です。
keys = ['Name', 'Age', 'Country']
values = ['Alice', 30, 'USA']
# zipを使って辞書を生成
data = dict(zip(keys, values))
print(data)
# 出力: {'Name': 'Alice', 'Age': 30, 'Country': 'USA'}
辞書型の注意点
辞書のキーは一意である必要がある
辞書のキーは重複してはいけません。同じキーを複数指定すると、最後に指定された値が有効になります。
d = {
'Name': 'Alice',
'Name': 'Bob'
}
print(d['Name']) # 出力: Bob
辞書のキーはハッシュ可能でなければならない
キーに使用できるのは、文字列や数値、タプルなどの変更不可なデータ型のみです。
# リストをキーにするとエラーになります
# d = {[1, 2, 3]: 'value'} # TypeError
まとめ
Pythonの辞書型は柔軟性が高く、データを効率的に管理し操作するための強力なツールです。本記事で紹介した基本操作や応用テクニックを活用することで、実際のプログラムでも役立つスキルを身に付けることができるでしょう。
辞書型を使いこなして、Pythonプログラミングをさらにレベルアップさせましょう!