출처 : 윤성우의 열혈 파이썬 : 중급
13. dict의 생성과 zip
d1 = {'a': 1, 'b': 2, 'c': 3}
print(d) # {'a': 1, 'b': 2, 'c': 3}
type({}) # <class 'dict'>
# dict 클래스 직접 생성
d2 = dict([('a', 1), ('b', 2), ('c', 3)])
# 딕셔너리 키가 문자열인 경우
d3 = dict(a = 1, b = 2, c = 3)
# zip 함수 이용
d4 = dict(zip(['a', 'b', 'c'], [1, 2, 3]))
assert(d1 == d2 == d3 == d4)
- 원래 딕셔너리와 같은 성격의 저장소는 저장 순서를 보장하지 않음
- 파이썬 버전 3.7부터는 저장 순서를 보관
저장 순서 보관
d = {'a': 1, 'b': 2, 'c': 3}
d['d'] = 4
print(d) # {'a':1, 'b': 2, 'c': 3, 'd': 4}
for k in d:
print(d[k], end = ', ') # 1, 2, 3, 4
zip 함수
# 두 개의 리스트에 저장된 값들의 조합
z = zip(['a', 'b', 'c'], [1, 2, 3])
for i in z:
print(i, end = ', ') # ('a', 1), ('b', 2), ('c', 3)
# 두 개의 튜플에 저장된 값들의 조합
z = zip(('a', 'b', 'c'), (1, 2, 3))
for i in z:
print(i, end = ', ') # ('a', 1), ('b', 2), ('c', 3)
z = zip('abc', (1, 2, 3))
for i in z:
print(i, end = ', ') # ('a', 1), ('b', 2), ('c', 3)
- zip이 반환하는 객체는 for 루프에 둘 수 있다(iterable 객체)
- zip은 인자로 전달된 리스트/튜플/문자열을 조합해서 다수의 튜플을 만들어 내는데, 같은 위치에 있는 값들끼리 조합해서 튜플을 만들어 낸다
d = list(zip(['a', 'b', 'c'], [1, 2, 3]))
print(d) # [('a', 1), ('b', 2), ('c', 3)]
t = tuple(zip('abc', '123'))
print(t) # (('a', '1'), ('b', '2'), ('c', '3'))
d = dict(zip(['a', 'b', 'c'], (1, 2, 3)))
print(d) # {'a': 1, 'b': 2, 'c': 3}
c = list(zip(['a', 'b', 'c'], (1, 2, 3), ['one', 'two', 'three']))
print(c) # [('a', 1, 'one'), ('b', 2, 'two'), ('c', 3, 'three')]
'프로그래머 > Python' 카테고리의 다른 글
[윤성우의 열혈 파이썬 중급편] 15. 함수 호출과 매개변수 선언에 있어서 *와 **의 사용 규칙 (0) | 2020.12.24 |
---|---|
[윤성우의 열혈 파이썬 중급편] 14. dict의 루핑 기술과 컴프리헨션 (0) | 2020.12.24 |
[윤성우의 열혈 파이썬 중급편] 12. named tuple (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 11. 튜플의 패킹과 언패킹 (0) | 2020.12.15 |
[윤성우의 열혈 파이썬 중급편] 10. generator 표현식 (0) | 2020.12.15 |