■ はじめに
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