Collection은 list, set, dictionary와 같은 다수의 정보를 저장하는 형태의 변수를 말한다.
3. 딕셔너리
- 딕셔너리는 집합과 비슷하게 순서가 존재하지 않는다. 리스트와의 차이가 이것이다.
- 딕셔너리는 key를 통해 value값을 호출한다.
- 빈 딕셔너리를 생성하려면 a = dict(), 혹은 a = {}
- 리스트에 항목을 추가하려면 append()를 사용하지만, 딕셔너리는
purse['money'] = 12 # 'money'라는 키에 12라는 값 연결
이런 방식으로 key 와 value를 집어넣는다.
- 이미 존재하는 key 와 value값에 새 value값을 덮어쓸 수도 있다.
purse['candy'] = purse['candy'] + 2
print(purse)
# {'money': 12, 'candy': 5, 'tissues': 75}
- 파이썬의 딕셔너리 처럼 키와 밸류를 연결하는 개념을 연관배열이라고 부른다.
리스트는 위치와 값을 연결하지만 그 관계가 덜 강력하고 덜 유연하다.
그래서 대부분의 현대 프로그래밍 언어에는 연관배열이라는 개념이 있다.
- in 을 이용해서 딕셔너리안에 특정 key 가 있는지 확인이 가능하다.
- get() 메소드는 특정 key가 존재할 경우와 존재하지 않을 경우를 나눠 데이터를 처리할 수 있게 한다.
특정 key가 존재할 경우 해당 key의 value값을 반환하고 존재하지 않을 경우 매개변수 값을 디폴트 값으로
반환한다.
- for 반복문도 가능하다. 대신 key를 입력한 순서대로 이뤄지지는 않는다.
counts = { 'chuck' : 1 , 'fred' : 42, 'jan': 100}
for key in counts:
print(key, counts[key])
# chuck 1
# fred 42
# jan 100
- items() 메소드를 통해 딕셔너리를 키와 값의 쌍을 튜플의 형태로 저장할 수 있다.
또한 이를 통해서 딕셔너리의 각 key, value를 for 문에 동시에 적용시키는 것도 가능하다.
jjj = { 'chuck' : 1 , 'fred' : 42, 'jan': 100}
for aaa,bbb in jjj.items() :
print(aaa, bbb)
# chuck 1
# fred 42
# jan 100