「Python」辞書とセットについて解説

python

2-2. 辞書とセット

辞書とは?

Pythonの辞書(dict)は、キーと値をペアで格納するデータ構造です。リストやタプルと違って、順序は保証されませんが、キーを使って迅速に値を検索できる点が特徴です。この特性により、データの検索が非常に効率的に行えます。例えば、名前をキーとして、その人の電話番号を値として格納するなどの用途に非常に便利です。辞書の要素は変更可能であり、必要に応じて簡単に追加や削除ができます。

  • 辞書の作成方法
person = {"name": "Alice", "age": 25}
print(person)
  • 出力:
{'name': 'Alice', 'age': 25}

辞書における最も重要な点は、各キーが一意であることです。つまり、同じキーを2回使用することはできません。もし重複したキーを追加しようとすると、古いキーが新しい値で上書きされます。

辞書の操作方法

辞書では、キーを使って値を取得したり、変更したりできます。ここでは、いくつかの基本的な操作方法を紹介します。

  • 値の取得
print(person["name"])  # Alice
  • 値の追加
person["city"] = "Tokyo"
print(person)
  • 出力:
{'name': 'Alice', 'age': 25, 'city': 'Tokyo'}
  • キーと値の削除
del person["age"]
print(person)
  • 出力:
{'name': 'Alice', 'city': 'Tokyo'}

辞書は検索において非常に高速であり、大量のデータを扱う際にもその効率の良さが発揮されます。特に、キーを使って値を簡単にアクセスできる点が大きな利点です。

セットとは?

セット(set)は、重複しない値を格納するデータ構造です。リストやタプルとは異なり、要素の順序は保持されません。主に重複データを排除する際に便利です。例えば、名簿から重複している名前を取り除くときなどにセットは有用です。セットを使うと、簡単にユニークなデータを管理することができます。

  • セットの作成方法
fruits = {"apple", "banana", "cherry", "apple"}
print(fruits)
  • 出力:
{'banana', 'apple', 'cherry'}

セットにおいては、要素が自動的に重複を排除してくれます。この特性を活かして、例えばリスト内の重複を削除したり、2つのセットの差異を取得したりすることができます。

セットの操作方法

セットでは、要素の追加や削除が簡単に行えます。例えば、新しい要素を追加する場合、add()メソッドを使います。逆に、要素を削除するにはremove()メソッドを使用します。

  • 要素の追加
fruits.add("orange")
print(fruits)
  • 出力:
{'banana', 'orange', 'apple', 'cherry'}
  • 要素の削除
fruits.remove("banana")
print(fruits)
  • 出力:
{'orange', 'apple', 'cherry'}

セットを使うことで、データの一意性を簡単に保つことができ、重複する値を気にすることなく管理することができます。


分かりやすくもっと解説!↓

分かりにくい場合は下の解説に進むことをオススメします。各プロンプトがどのような役割を果たしているか詳しく記載しました。

1. 辞書の基本操作

person = {"name": "Alice", "age": 25}
print(person)

役割:
このコードは、辞書を作成する基本的な例を示しています。personという名前の辞書を定義し、その中に"name": "Alice""age": 25というキーと値のペアを格納しています。print(person)は辞書全体を表示するためのコードです。


2. 辞書からの値の取得

print(person["name"])  # Alice

役割:
辞書から特定のキーに関連付けられた値を取得する方法を示しています。この例では、"name"というキーを使って、値"Alice"を取得し、それを表示しています。


3. 辞書への要素追加

person["city"] = "Tokyo"
print(person)

役割:
新しいキーと値を辞書に追加する方法を示しています。ここでは"city"という新しいキーを追加し、その値に"Tokyo"を設定しています。print(person)で辞書全体を再表示し、追加されたことを確認できます。


4. 辞書からの要素削除

del person["age"]
print(person)

役割:
辞書から特定のキーとその値を削除する方法を示しています。del person["age"]"age"というキーを辞書から削除し、再度print(person)で辞書を表示します。


5. セットの作成

fruits = {"apple", "banana", "cherry", "apple"}
print(fruits)

役割:
セット(集合)の作成方法を示しています。セットは重複する要素を自動的に排除します。このコードでは"apple"が2回指定されていますが、最終的にセットには1回しか含まれません。


6. セットへの要素追加

fruits.add("orange")
print(fruits)

役割:
セットに新しい要素を追加する方法を示しています。add()メソッドを使用して、"orange"をセットに追加しています。


7. セットからの要素削除

fruits.remove("banana")
print(fruits)

役割:
セットから特定の要素を削除する方法を示しています。remove()メソッドを使用して、"banana"をセットから削除しています。


8. 簡単なプログラム作品:電話帳の管理

contacts = {}

def add_contact(name, phone_number):
    if name in contacts:
        print(f"{name} is already in the contact list.")
    else:
        contacts[name] = phone_number
        print(f"Contact added: {name} - {phone_number}")

def remove_contact(name):
    if name in contacts:
        del contacts[name]
        print(f"Contact removed: {name}")
    else:
        print(f"{name} not found in the contact list.")

def display_contacts():
    if contacts:
        print("Contacts list:")
        for name, phone_number in contacts.items():
            print(f"{name}: {phone_number}")
    else:
        print("No contacts available.")
 

役割:
このプログラムは、電話帳を管理する基本的なプログラムです。辞書を使用して連絡先を管理し、名前をキー、電話番号を値として格納します。add_contact()関数で新しい連絡先を追加し、remove_contact()関数で連絡先を削除、display_contacts()関数で全ての連絡先を表示することができます。


9. 実行結果の表示

Contact added: Alice - 123-456-7890
Contact added: Bob - 987-654-3210
Contacts list:
Alice: 123-456-7890
Bob: 987-654-3210
Contact removed: Alice
Contacts list:
Bob: 987-654-3210

役割:
プログラムを実行した際の出力結果です。これにより、add_contact()remove_contact()、およびdisplay_contacts()関数がどのように動作しているかを確認できます。


10. 実用的なプログラム作品:連絡先管理システム

contacts = {}

def add_contact(name, phone_number):
    if name in contacts:
        print(f"{name} is already in the contact list.")
    elif phone_number in [contact["phone"] for contact in contacts.values()]:
        print(f"The phone number {phone_number} is already registered.")
    else:
        contacts[name] = {"phone": phone_number}
        print(f"Contact added: {name} - {phone_number}")

def remove_contact(name):
    if name in contacts:
        del contacts[name]
        print(f"Contact removed: {name}")
    else:
        print(f"{name} not found in the contact list.")

def display_contacts():
    if contacts:
        print("Contacts list:")
        for name, details in contacts.items():
            print(f"{name}: {details['phone']}")
    else:
        print("No contacts available.")

# プログラムの実行
add_contact("Alice", "123-456-7890")
add_contact("Bob", "987-654-3210")
add_contact("Alice", "555-555-5555")  # 重複する名前
add_contact("Charlie", "987-654-3210")  # 重複する電話番号
display_contacts()
remove_contact("Alice")
display_contacts()
# プログラムの実行
add_contact("Alice", "123-456-7890")
add_contact("Bob", "987-654-3210")
add_contact("Alice", "555-555-5555") # 重複する名前
add_contact("Charlie", "987-654-3210") # 重複する電話番号
display_contacts()
remove_contact("Alice")
display_contacts()

役割:
このプログラムは、連絡先を管理し、重複する名前や電話番号を排除するシステムを作成するものです。名前と電話番号の重複を防ぐロジックを追加し、add_contact()remove_contact()display_contacts()関数を使用しています。


コメント

タイトルとURLをコピーしました