파이썬에서 딕셔너리(dictionary)를 리스트(list)로 변환해야 하는 상황은 매우 흔합니다. 키나 값을 인덱스로 접근하거나, 데이터를 정렬하거나, 다른 함수에 전달하기 위해 리스트 형태가 필요할 때가 그렇습니다. 다행히 파이썬의 딕셔너리 클래스는 이러한 변환을 위해 기본적으로 세 가지 메서드를 제공합니다.
items(), keys(), values() 메서드는 각각 키-값 쌍의 튜플, 키만, 값만 포함하는 뷰(view) 객체를 반환합니다. 내장 함수인 list()를 사용하면 이 뷰 객체들을 손쉽게 리스트 객체로 변환할 수 있습니다.
1. items() – 키-값 쌍을 리스트로 변환
items() 메서드는 딕셔너리의 모든 키-값 쌍을 튜플 형태로 담은 dict_items 뷰 객체를 반환합니다. 이를 list()로 감싸면 (키, 값) 튜플들의 리스트를 얻을 수 있습니다.
>>> d1 = {'name': 'Ravi', 'age': 23, 'marks': 56}
>>> d1.items()
dict_items([('name', 'Ravi'), ('age', 23), ('marks', 56)])
>>> l1 = list(d1.items())
>>> l1
[('name', 'Ravi'), ('age', 23), ('marks', 56)]
2. keys() – 키만 리스트로 변환
keys() 메서드는 딕셔너리의 모든 키를 담은 dict_keys 뷰 객체를 반환합니다. 리스트로 변환하면 키들만 모인 리스트가 됩니다.
>>> d1.keys() dict_keys(['name', 'age', 'marks']) >>> l2 = list(d1.keys()) >>> l2 ['name', 'age', 'marks']
3. values() – 값만 리스트로 변환
values() 메서드는 딕셔너리의 모든 값을 담은 dict_values 뷰 객체를 반환합니다. 리스트로 변환하면 값들만 모인 리스트를 얻을 수 있습니다.
>>> l3 = list(d1.values()) >>> l3 ['Ravi', 23, 56]
뷰 객체의 특징 참고 사항
위 메서드들이 반환하는 뷰 객체는 딕셔너리의 실시간 반영본이라는 점이 특징입니다. 즉, 원본 딕셔너리가 변경되면 뷰 객체의 내용도 함께 바뀝니다. 따라서 변경 이후에도 계속 사용할 고정된 데이터가 필요하다면, 위 예제처럼 list()로 변환하여 독립적인 리스트 객체를 만들어 두는 것이 좋습니다.