d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key, 'corresponds to', d[key])
key
파이썬 은 사전에서 읽기만 하면 된다는 것을 어떻게 인식 합니까? 특별한 키워드 입니까 key
, 아니면 단순히 변수입니까?
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print(key, 'corresponds to', d[key])
key
파이썬 은 사전에서 읽기만 하면 된다는 것을 어떻게 인식 합니까? 특별한 키워드 입니까 key
, 아니면 단순히 변수입니까?
key
변수 이름일 뿐입니다.
for key in d:
키와 값이 아닌 사전의 키를 반복합니다. 키와 값을 모두 반복하려면 다음을 사용할 수 있습니다.
Python 3.x의 경우:
for key, value in d.items():
Python 2.x의 경우:
for key, value in d.iteritems():
직접 테스트하려면 단어 key
를 로 변경하십시오 poop
.
Python 3.x에서 iteritems()
는 단순히 로 대체되었습니다 items()
. 이는 dict에 의해 뒷받침되는 집합과 같은 뷰를 반환 iteritems()
하지만 더 좋습니다. 이것은 2.7에서도 사용할 수 있습니다 viewitems()
.
이 작업 items()
은 2와 3 모두에서 작동하지만 2에서는 사전 쌍 목록을 반환하며 호출 (key, value)
후에 발생하는 사전의 변경 사항을 반영하지 않습니다 . items()
3.x에서 2.x 동작을 원하면 을 호출할 수 있습니다 list(d.items())
.
키가 특별한 단어가 아니라 사전이 반복자 프로토콜을 구현한다는 것입니다. 클래스에서 이것을 할 수 있습니다. 예를 들어 클래스 반복자를 작성하는 방법에 대해서는 이 질문 을 참조하십시오.
사전의 경우 C 수준에서 구현됩니다. 자세한 내용은 PEP 234 에서 확인할 수 있습니다 . 특히 "Dictionary Iterators" 섹션은 다음과 같습니다.
사전은 사전의 키를 반복하는 효율적인 반복자를 반환하는 tp_iter 슬롯을 구현합니다. [...] 이것은 우리가 쓸 수 있음을 의미합니다
for k in dict: ...
와 동일하지만 훨씬 빠릅니다.
for k in dict.keys(): ...
루프 또는 다른 스레드에 의한 사전 수정에 대한 제한을 위반하지 않는 한.
다른 종류의 반복자를 명시적으로 반환하는 메서드를 사전에 추가합니다.
for key in dict.iterkeys(): ... for value in dict.itervalues(): ... for key, value in dict.iteritems(): ...
for x in dict
의 줄임말 이라는 뜻입니다for x in dict.iterkeys()
.
Python 3에서 dict.iterkeys()
, dict.itervalues()
및 dict.iteritems()
는 더 이상 지원되지 않습니다. 대신 dict.keys()
, dict.values()
를 사용하십시오 dict.items()
.
dict
여기에서 볼 수 있듯이 특정 순서 없이 키를 반복합니다 .
( Python 3.6 에서는 더 이상 그렇지 않지만 아직 동작 이 보장되지는 않습니다.)
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> list(d)
['y', 'x', 'z']
>>> d.keys()
['y', 'x', 'z']
귀하의 예를 들어 다음을 사용하는 것이 좋습니다 dict.items()
.
>>> d.items()
[('y', 2), ('x', 1), ('z', 3)]
이것은 튜플 목록을 제공합니다. 다음과 같이 반복하면 각 튜플이 자동으로 압축 해제 k
됩니다 v
.
for k,v in d.items():
print(k, 'corresponds to', v)
루프 본문이 몇 줄에 불과한 경우 루프를 반복할 때 k
및 v
변수 이름을 사용 하는 것은 매우 일반적입니다. dict
더 복잡한 루프의 경우 더 설명적인 이름을 사용하는 것이 좋습니다.
for letter, number in d.items():
print(letter, 'corresponds to', number)
형식 문자열을 사용하는 습관을 들이는 것이 좋습니다.
for letter, number in d.items():
print('{0} corresponds to {1}'.format(letter, number))
[Python] Python에 문자열 '포함' 하위 문자열 메서드가 있습니까? (0) | 2022.08.21 |
---|---|
[Python] 함수에서 전역 변수 사용 (0) | 2022.07.31 |
[Python] 목록에서 항목의 인덱스 찾기 (0) | 2022.07.31 |
[Python] 슬라이싱 이해하기 (0) | 2022.07.31 |
[Python] @staticmethod와 @classmethod의 차이점 (0) | 2022.07.31 |