본문 바로가기

프로그래머/Python

[윤성우의 열혈 파이썬 중급편] 14. dict의 루핑 기술과 컴프리헨션

출처 : 윤성우의 열혈 파이썬 : 중급

14. dict의 루핑 기술과 컴프리헨션

d = dict(a = 1, b = 2, c = 3)
for k in d:
    print(d[k], end = ', ')     # 1, 2, 3
  • dict.keys() : 딕셔너리의 키들만 참조하고자 할 때
  • dict.values() : 딕셔너리의 값들만 참조하고자 할 때
  • dict.items() : 딕셔너리의 키와 값을 튜플 형태로 참조하고자 할 때

    위의 세 메소드가 반환하는 것을 가리켜 view 객체라고 한다

view 객체

d = dict(a = 1,  b = 2, c = 3)
for k in d.keys():
    print(k, end = ', ')        # a, b, c

for v in d.values():
    print(v, end = ', ')        # 1, 2, 3

for kv in d.items():
    print(kv, end = ', ')       # ('a', 1), ('b', 2), ('c', 3)

for k, v in d.itmes():
    print(, v, sep = ', ')      # a, 1\n b, 2\n c, 3

view가 바라보는 현재 상태

d = dict(a = 1, b = 2, c = 3)
vo = d.items()
for kv in vo:
    print(kv, end = ' ')        # ('a', 1), ('b', 2), ('c', 3)

d['a'] += 3
d['c'] -= 2
for kv in vo:
    print(kv, end = ' ')        # ('a', 4), ('b', 2), ('c', 1)

view 객체는 단순히 키 또는 값을 얻어오는데 사용될 뿐만 아니라 현재 딕셔너리의 상태를 그대로 반영한다는 특징이 있다

dict 컴프리헨션

d1 = dict(a = 1, b = 2, c = 3)
d2 = {k : v*2 for k, v in d1.items()}
d3 = {k : v*2 for k, v in d2.items()}

d2 = {k : v for k, v in d1.items() if v % 2}

ds = ['a', 'b', 'c', 'd']
vs = [1, 2, 3, 4]
d  = {k: v for k, v in zip(ks, vs)}
d2 = {k: v for k, v in zip(ks, vs) if v % 2}