HOWTO · Python
Python에서 사전을 목록으로 변환
이 기사에서는 Python에서 사전을 목록으로 변환하는 방법을 소개합니다.
이 페이지의 내용
Python 딕셔너리는 키-값 쌍을 저장합니다. “딕셔너리를 리스트로 변환한다”는 말은 키 리스트, 값 리스트, (key, value) 튜플 리스트라는 세 가지 결과를 뜻할 수 있습니다. 다음 작업에 필요한 형태를 고른 뒤 해당 딕셔너리 뷰를 list()에 전달해 리스트로 만드세요.
딕셔너리에서 변환할 항목 고르기
리스트에 딕셔너리 키를 담으려면 keys(), 값을 담으려면 values(), 키와 값을 쌍으로 담으려면 items()를 사용하세요. 아래 예제에서는 같은 딕셔너리를 계속 사용합니다. 각 Python 예제를 실행해 사용 중인 환경에서 결과를 확인하세요.
딕셔너리의 키와 값을 리스트로 변환하기
keys()와 values()는 딕셔너리 메서드입니다. Python 3에서는 뷰를 반환하며, list() 내장 함수로 이 뷰를 리스트로 만들 수 있습니다. 키와 값 리스트는 딕셔너리의 순회 순서를 따르며, 같은 위치의 항목끼리 서로 대응합니다.
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
dictionary = {"a": "Apple", "b": "Banana", "c": "Cherries", "d": "Dragon Fruit"}
keys = list(dictionary.keys())
values = list(dictionary.values())
print(type(dictionary.keys()))
print(keys)
print(values)
list(dictionary)를 사용하면 키 리스트를 더 간결하게 만들 수 있습니다. 메서드 이름을 명시해야 의도가 분명해지는 경우에는 list(dictionary.keys())를 선택하세요. 키나 값을 순회하기만 하면 리스트를 새로 할당하지 않고 뷰를 직접 순회할 수 있습니다.
딕셔너리 항목을 튜플 리스트로 변환하기
키-값 쌍이 필요하면 items()를 호출하고 반환된 뷰를 list()에 전달하세요. 결과 리스트의 각 원소는 키가 먼저 오고 값이 뒤따르는 두 항목짜리 튜플입니다.
이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.
dictionary = {"a": "Apple", "b": "Banana", "c": "Cherries", "d": "Dragon Fruit"}
pairs = list(dictionary.items())
print(type(dictionary.items()))
print(pairs)
쌍이 필요할 때는 이 방법이 직접적입니다. zip(dictionary.keys(), dictionary.values())로 같은 딕셔너리에서 나온 두 시퀀스의 항목을 짝지을 수도 있지만, 이 작업에서는 이점이 없고 입력이 서로 다른 출처에서 왔다면 잘못 사용할 가능성이 더 큽니다. 일반적인 딕셔너리의 키-값 쌍에는 items()를 사용하세요.
Python 3 딕셔너리 뷰와 순서 이해하기
Python 3에서 keys(), values(), items()는 리스트가 아니라 뷰 객체를 반환합니다. 뷰는 순회에 유용하며, 리스트가 필요하면 list()로 별도의 리스트를 만듭니다. 예제의 타입 확인으로 뷰와 리스트로 변환한 결과를 구분할 수 있습니다.
예제의 항목은 딕셔너리 순회 순서대로 표시되고, 각 키와 값은 서로 대응합니다. 딕셔너리를 만든 방식과 관계없이 특정 순서가 필요하다면 직접 정렬하세요. 예를 들어 키를 정렬한 뒤 사용할 수 있습니다. 다른 딕셔너리에서 표시된 순서를 보고 현재 작업에 필요한 순서까지 정해졌다고 간주하지 마세요.
Python 2 호환성 처리하기
iteritems()는 Python 2에서 사용하던 레거시 딕셔너리 메서드입니다. 위에 나온 Python 3의 items() 예제와는 다릅니다. 아래 레거시 구문은 설명용일 뿐이므로 Python 3 코드로 실행하지 마세요.
pairs = list(dictionary.iteritems()) (Python 2 전용 설명용 구문이며, Python 3 예제가 아닙니다.)
Python 3에서는 list(dictionary.items())를 사용하세요. 제공된 레거시 예제만으로는 Python 2에서의 특정 순서나 타입 표시를 신뢰할 만하게 설명할 수 없으므로 그런 내용은 생략했습니다. 오래된 Python 2 코드를 유지 관리한다면 Python 3 예제의 동작이 그대로 적용된다고 가정하지 말고, 지원하는 인터프리터와 코드베이스에서 동작을 확인하세요.