辞書と集合の基礎

  1. 辞書 (dict) の基本

1.1 概要

辞書は、キーと値のペアを格納するための組み込みデータ構造です。各キーは一意であり、それに関連する値を持ちます。

# 格納例
user_data = {"名前": "山田", "年齢": 30, "スコア": 85}
print(user_data, type(user_data))

注意点: キーは一意である必要がありますが、同じ値が異なるキーに紐づくことは可能です。

# 同じ値を持つ異なるキー
data = {"氏名": "佐藤", "ニックネーム": "佐藤"}
print(data)

# キーが重複した場合、後者の値が採用される
data = {"氏名": "鈴木", "氏名": "田中"}
print(data)
  1. 辞書の基本操作

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', 'バナナ')])
  1. 集合 (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
  1. 集合の基本操作

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}

タグ: Python Dictionary set

6月25日 16:11 投稿