파이썬에서 사전 키를 목록으로 얻는 방법

Aliaksei Yursha 2023년1월30일
  1. 파이썬 사전 키를 얻기위한 dict.keys()
  2. 파이썬 사전 키를 얻기위한 루프
  3. 파이썬 사전 키를 리스트 내포 이해력을 나열하십시오
  4. 키를 얻기 위해*연산자를 풀어주는 파이썬 사전
  5. 런타임 성능 비교
파이썬에서 사전 키를 목록으로 얻는 방법

사전 프로그래밍 키를 시퀀스로 보는 것은 파이썬 프로그래밍에서 일상적인 사용 사례입니다.

각기 다른 성능 특성을 가진 여러 가지 접근 방식이 있습니다.

파이썬 사전 키를 얻기위한 dict.keys()

dict.keys() 함수
사전 키의 반복 가능한보기 인 dict_keys 를 반환합니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> state_capitals.keys()
dict_keys(['California', 'Pennsylvania', 'Texas'])

dict_keys 를 목록으로 변환하지 않고 직접 반복 할 수 있습니다.
많은 유스 케이스의 경우 API 목록 대신 dict_keys 를 삭제할 수 있으며 작동합니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> for state in state_capitals.keys():
...   print(state)
...
California
Pennsylvania
Texas

예를 들어 목록과 같이 사전 키를 엄격하게 처리해야하는 경우
인덱스를 사용하여 시퀀스에서 특정 키를 읽으려면 변환해야합니다.
dict_keys 를 먼저 목록에 넣습니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals.keys())
['California', 'Pennsylvania', 'Texas']

키를 목록으로 가져 오려면 dict.keys()를 호출하는 것은 선택 사항입니다.
파이썬 사전은 해당 키를 반복 할 수 있으므로 a 를 전달할 수 있습니다
자체를 목록 생성자로 옮깁니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> list(state_capitals)
['California', 'Pennsylvania', 'Texas']

파이썬 사전 키를 얻기위한 루프

파이썬에서 사전의 독특한 특성은 반복 할 때,
당신은 그들의 열쇠를 반복합니다.
따라서 모든 사전 키를 반복하여 간단하게 수집 할 수 있습니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = []
>>> for key im state_capitals:
...   keys.append(key)
...
>>> keys
['California', 'Pennsylvania', 'Texas']

파이썬 사전 키를 리스트 내포 이해력을 나열하십시오

루프를 사용하는 것보다 구문이 향상되면 Python 의 리스트 내포를 사용할 수 있습니다.
리스트 내포를 통해 위의 루프를 하나의 라이너로 압축 할 수 있습니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [key for key in state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']

키를 얻기 위해*연산자를 풀어주는 파이썬 사전

파이썬 3.5부터는 * unpacking **연산자를 사용하여 사전 키를 붙잡을 수 있습니다.
이 기능은 PEP 448-추가 개봉 일반화와 함께 도입되었습니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys = [*state_capitals]
>>> keys
['California', 'Pennsylvania', 'Texas']

이 방법의 장점은 튜플이나 세트와 같은 목록 이외의 다른 컬렉션으로 사전 키의 압축을 풀 수 있다는 것입니다.

>>> state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}
>>> keys_tuple = *state_capitals,
>>> keys_tuple
('California', 'Pennsylvania', 'Texas')
>>> keys_set = {*state_capitals}
>>> keys_set
{'California', 'Pennsylvania', 'Texas'}

런타임 성능 비교

위의 각 접근 방식의 런타임 성능은 다양합니다.

>>> from timeit import timeit
>>> timeit("list(state_capitals.keys())", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25394885599962436
>>> timeit("list(state_capitals)", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.17995373999929143
>>> timeit("for key in state_capitals: keys.append(key)", setup="keys = []; state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.25294865500018204
>>> timeit("[key for key in state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.2447525150000729
>>> timeit("[*state_capitals]", setup="state_capitals = {'California': 'Sacramento', 'Pennsylvania': 'Harrisburg', 'Texas': 'Austin'}")
0.0962776809992647

위의 타이밍에서 다음과 같이 포장 풀기*연산자가 가장 빠릅니다.

다른 접근 방식으로 넘어갈만한 합당한 이유가없는 한 선호하십시오.

관련 문장 - Python Dictionary