반응형
Not using items()
to iterate over a dictionary
key-value쌍으로 이루어진 딕셔너리를 iterate하는 최적의 방법은 for문에 2개의 변수를 선언하고
dictionary.items()를 호출하는 것이다.
각각의 for 반복문에서 파이썬은 자동으로 첫번째 변수에 key를, 두번째 변수에 value를 대입한다.
Anti-pattern
d = {"first_name": "Alfred", "last_name":"Hitchcock"} for key in d: print("{} = {}".format(key, d[key]))
위 예제는 d라는 딕셔너리를 for루프를 통해 순회하는 코드이다.
for루프 내부에서 key를 통해 각 딕셔너리의 값들에 접근한다.
딕셔너리를 순회하는 일반적인 코드이지만 권장하는 방법은 아니다.
Best-practice
d = {"first_name": "Alfred", "last_name":"Hitchcock"} for key,val in d.items(): print("{} = {}".format(key, val))
수정된 코드는 Pythonic한 순회 코드이다.
두개의 변수를 통해 itmes()를 호출하면 파이썬은 자동으로 첫번째 변수에 키를, 두번째 변수에 해당 키에 맞는 값을 할당한다.
Difference Python 2 and Python 3
파이썬 2.x에서 items는 복사된 key-value딕셔너리를 튜플 형태로 반환한다.
따라서 복사된 모든 딕셔너리를 메모리에 올리지 않기위해 iteritems를 사용하는것이 권장된다.
하지만 파이썬 3.x에서는 iteritems가 제거됐고 items를 사용해야한다.