LoginSignup
0
0

[ Python ] 辞書型

Last updated at Posted at 2024-05-18

■ はじめに

Python勉強につき、メモを残します。
下記内容は、備忘録レベルで書き殴ってますので間違い等あるかもしれません。
参考にする際にはその点ご認識のほどお願いします〜。。

■ 辞書型

・ 空の辞書型定義
・ データの追加
・ データへのアクセス
・ 変数定義と値の代入
・ データの編集
・ データの削除
・ keyの全取り出し
・ valueの全取り出し
・ 存在しないkeyへのアクセス(エラー)
・ setdefault関数

■ サンプルソース

辞書型
# 空の辞書型を作成し、後からデータを追加
teacher = {}

# 追加構文:変数名['key'] = value
teacher[1] = 'Oniduka'

# データへのアクセス
print(teacher[1])
# 出力結果: Oniduka

# 変数定義と値の代入:変数名 = {key: value...}
student = {1: 'Aida', 2: 'Uida', 3: 'Iida'}

# データの編集
print(f'studentデータ編集前:{student}')
student[2] = 'Iida'
student[3] = 'Uida'
print(f'studentデータ編集後:{student}')
# 出力結果: studentデータ編集前:{1: 'Aida', 2: 'Uida', 3: 'Iida'}
# 出力結果: studentデータ編集後:{1: 'Aida', 2: 'Iida', 3: 'Uida'}


# データの削除
print(f'studentデータ削除前:{student}')
student.pop(3)
print(f'studentデータ削除後:{student}')
# 出力結果: studentデータ削除前:{1: 'Aida', 2: 'Iida', 3: 'Uida'}
# 出力結果: studentデータ削除後:{1: 'Aida', 2: 'Iida'}

# keyの全取り出し
print(student.keys())
# 出力結果: dict_keys([1, 2])

# valueの全取り出し
print(student.values())
# 出力結果: dict_values(['Aida', 'Iida'])

# 存在しないkeyへのアクセス(エラー)
print(student[3])
# 出力結果: 
#   Traceback (most recent call last):
#   print(student[3])
#   KeyError: 3

# setdefault関数
print(student.setdefault(4, 'データが存在しません'))
# 出力結果: データが存在しません

■ ネストした構造の辞書型

ネスト辞書
# ネスト構造の辞書型
students = {
    'student_01':
        {
            'name': 'Aida',
            'age': 25,
            'courses': ['Math', 'Science', 'English']
        },
    'student_02':
        {
            'name': 'Iida',
            'age': 30,
            'courses': ['Dotoku']
        },
}
# student_01の名前にアクセス
print(students['student_01']['name'])
# 出力結果: Aida

# student_01のコースにアクセス
print(students['student_01']['courses'])
# 出力結果: ['Math', 'Science', 'English']

# student_02のコースの1つ目にアクセス(添字アクセス)
print(students['student_02']['courses'][0])
# 出力結果: Dotoku

# student_02の年齢にアクセス(setdefault関数)
print(students.setdefault('student_02', {}).setdefault('age', 'No Data'))
# 出力結果: 30

# 第一引数に辞書型、第二引数に生徒IDを受け取り、年齢から生徒か判定
def is_student(students, student_id):
    age = students.setdefault(student_id, {}).setdefault('age', 'No Data')
    if age >= 25:
        print(f'{students[student_id]["name"]}さん、、、がっ..学生じゃなかったんですか。。。?')
        return False
    return True


print(is_student(students, 'student_02'))
# 出力結果: Iidaさん、、、がっ..学生じゃなかったんですか。。。?
# 出力結果: False
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0