사전(Dictionary)은 리스트나 집합처럼 여러 객체를 모아 만든 객체다.
다른 자료구조와의 큰 차이는 다양한 종류의 불변 객체를 사용해서 자료에 접근할 수 있다는 것(숫자, 문자열을 사용해서 자료에 접근 가능)
사전에 사용되는 인덱스는 키(key)라고 부르고, 키가 가리키는 대상 객체는 값(value)라고 부른다.
키와 값의 쌍을 key-value pair라 한다.
사전은 중괄호 {}나 dict() 함수를 이용하여 만들 수 있다.
majors = {"CS": "Computer Science",
"EE": "Electrical Engineering",
"MAS": "Mathematical Sciences",
"ME": "Mechanical Engineering"}
d1 = dict() # an empty dictionary
d2 = {} # an empty dictionary
majors["PH"] = "Physic"
print(majors)
majors["PH"] = "Physics"
print(majors)
majors[0] = 0.001
print(majors)
print(len(majors))
print("CS" in majors)
print("AI" in majors)
print(majors.keys())
print(majors.values())
print(majors.items())
for key in majors:
print("%s is %s" % (key, majors[key]))
for key, value in majors.items():
print("%s is %s" % (key, value))
결과값은 다음과 같다.
{'CS': 'Computer Science', 'EE': 'Electrical Engineering', 'MAS': 'Mathematical Sciences', 'ME': 'Mechanical Engineering', 'PH': 'Physic'}
{'CS': 'Computer Science', 'EE': 'Electrical Engineering', 'MAS': 'Mathematical Sciences', 'ME': 'Mechanical Engineering', 'PH': 'Physics'}
{'CS': 'Computer Science', 'EE': 'Electrical Engineering', 'MAS': 'Mathematical Sciences', 'ME': 'Mechanical Engineering', 'PH': 'Physics', 0: 0.001}
6
True
False
dict_keys(['CS', 'EE', 'MAS', 'ME', 'PH', 0])
dict_values(['Computer Science', 'Electrical Engineering', 'Mathematical Sciences', 'Mechanical Engineering', 'Physics', 0.001])
dict_items([('CS', 'Computer Science'), ('EE', 'Electrical Engineering'), ('MAS', 'Mathematical Sciences'), ('ME', 'Mechanical Engineering'), ('PH', 'Physics'), (0, 0.001)])
CS is Computer Science
EE is Electrical Engineering
MAS is Mathematical Sciences
ME is Mechanical Engineering
PH is Physics
len(d) : d의 원소의 수를 반환한다.
key in d : d가 key를 가지고 있으면 True를, 아니면 False를 반환한다.
d.get(key, default=None) : d에서 key가 가리키는 값을 반환한다.
d가 key를 가지고 있지 않으면 default 값을 반환한다.
d.keys() : d의 모든 key 객체 목록을 반환한다.
d.values() : d의 모든 value 객체 목록을 반환한다.
d.items() : d의 모든 key-value pair를 사전 d에서 제거한다.
key(), value(), items()로 반환되는 객체는 리스트 객체가 아니다.
이 객체들은 리스트처럼 원소들을 가지고 있지만, 객체를 변경할 수 없다.
(.appen()와 같이 원소를 추가할 수 없다.)