- 辞書 (dict) の基本
1.1 概要
辞書は、キーと値のペアを格納するための組み込みデータ構造です。各キーは一意であり、それに関連する値を持ちます。
# 格納例
user_data = {"名前": "山田", "年齢": 30, "スコア": 85}
print(user_data, type(user_data))
注意点: キーは一意である必要がありますが、同じ値が異なるキーに紐づくことは可能です。
# 同じ値を持つ異なるキー
data = {"氏名": "佐藤", "ニックネーム": "佐藤"}
print(data)
# キーが重複した場合、後者の値が採用される
data = {"氏名": "鈴木", "氏名": "田中"}
print(data)
- 辞書の基本操作
2.1 要素の確認
inは指定されたキーが辞書内に存在するかを確認します。not inは指定されたキーが辞書内に存在しないかを確認します。
info = {"city": "東京", "population": 9_000_000}
print("city" in info) # True
print("country" not in info) # True
len()で辞書内の要素数(キー・値ペア)を取得できます。
data = {"a": 10, "b": 20, "c": 30}
print(len(data)) # 3
辞書[キー]で特定の値を取得できます。ただし、指定したキーが存在しない場合はエラーが発生します。
data = {"x": 100, "y": 200}
print(data["x"]) # 100
# print(data["z"]) # KeyError
get(キー, デフォルト値)で値を安全に取得できます。キーが存在しない場合はデフォルト値を返します。
data = {"key1": "value1", "key2": "value2"}
print(data.get("key1")) # value1
print(data.get("key3", "存在しません")) # 存在しません
2.2 要素の変更
data = {"item1": 10, "item2": 20}
data["item1"] = 15 # 値の更新
print(data) # {'item1': 15, 'item2': 20}
2.3 要素の追加
data = {"item1": 10, "item2": 20}
data["item3"] = 30 # 新しいキー・値ペアの追加
print(data) # {'item1': 10, 'item2': 20, 'item3': 30}
2.4 要素の削除
delで特定のキー・値ペアを削除できます。
data = {"a": 1, "b": 2, "c": 3}
del data["b"]
print(data) # {'a': 1, 'c': 3}
clear()で全ての要素を削除し、空の辞書にします。
data = {"x": 10, "y": 20}
data.clear()
print(data) # {}
pop(キー, デフォルト値)で要素を削除しつつその値を返します。
data = {"p": 100, "q": 200}
removed_value = data.pop("p")
print(removed_value) # 100
print(data) # {'q': 200}
2.5 辞書の反復処理
data = {"red": "赤", "blue": "青", "green": "緑"}
for key in data:
print(key) # red, blue, green
keys(),values(),items()を使用して辞書の内容を効率的に扱えます。
data = {"apple": "りんご", "banana": "バナナ"}
print(data.keys()) # dict_keys(['apple', 'banana'])
print(data.values()) # dict_values(['りんご', 'バナナ'])
print(data.items()) # dict_items([('apple', 'りんご'), ('banana', 'バナナ')])
- 集合 (set) の基本
3.1 概要
集合は、順序を持たず重複を許さないデータ構造です。主に数学的な集合演算(和集合、積集合など)に利用されます。
# 定義例
fruits = {"リンゴ", "バナナ", "オレンジ"}
print(fruits, type(fruits)) # {'リンゴ', 'バナナ', 'オレンジ'} <class 'set'>
空の集合は
{}ではなくset()を使用してください。
empty_set = set()
print(empty_set, type(empty_set)) # set() <class 'set'>
3.2 特徴
- 無順序: 集合内の要素には固定された順序がありません。
- 唯一性: 集合内の要素は一意であり、重複は許されません。
- ハッシュ可能性: 集合の要素はハッシュ可能でなければなりません。
# ハッシュ可能なデータ型
print(hash("文字列"))
print(hash((1, 2, 3)))
# ハッシュ不可能なデータ型
# print(hash([1, 2, 3])) # TypeError
- 集合の基本操作
4.1 要素の追加
add(要素)で集合に要素を追加します。
colors = {"赤", "青"}
colors.add("緑")
print(colors) # {'赤', '青', '緑'}
update(イテラブル)で複数の要素を追加できます。
numbers = {1, 2, 3}
numbers.update([4, 5, 6])
print(numbers) # {1, 2, 3, 4, 5, 6}
4.2 要素の削除
remove(要素)で指定された要素を削除します。該当する要素がない場合、エラーが発生します。
letters = {"a", "b", "c"}
letters.remove("b")
print(letters) # {'a', 'c'}
discard(要素)でも同様に削除できますが、該当する要素が存在しなくてもエラーになりません。
letters = {"x", "y", "z"}
letters.discard("y")
letters.discard("w") # エラーなし
print(letters) # {'x', 'z'}
4.3 数学的演算
4.3.1 積集合
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
intersection = set1 & set2
print(intersection) # {3, 4}
4.3.2 和集合
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1 | set2
print(union) # {1, 2, 3, 4, 5}