나는 조금 의아해 다음에 의해 코드:
d = {'x': 1, 'y': 2, 'z': 3}
for key in d:
print key, 'corresponds to', d[key]
그냥 '키' 가 변수 이름을.
for key in d:
루프 (loop) 가 아닌 단순히 시동키는 통해 사전에 시동키는 및 값프로필. 키와 값을 루프 (loop) 를 통해 다음 모두 사용할 수 있습니다.
윈도 2.x 용:
for key, value in d.iteritems():
윈도 3.x 용:
for key, value in d.items():
'고물' 단어 '키' 를 교도관님도요 테스트하려면 변경하십시오.
윈도 3.x 용 () ',' 아리트마스 교체되었는지 단순히 '항목 ()' 를 통해 이 같은 '하지만' () 는 설정 등 보기입니다 되돌려줍니다 뒷받침됩니다 딕트 아리트마스 더 좋다. 2.7 로 비비템스 () '이' 에서도 사용할 수 있습니다.
'작업' 은 사용할 수 있지만, 모두 2 와 3 의 2 개 항목 () 이 목록을 반환되므로 dictionary& # 39 의 ' (키 값)' 이 반영되지 않는 쌍을 변경되는지 딕트 '항목 ()' 이후 발생하는 콜. 2.x 스케쳐내 '목록 (d.2템스 ())' 에서 비헤이비어를 3.x 실행할 수 있습니다.
>. - 사전 구현할 수 있는 효과적인 되돌려줍니다 tp_iter 슬롯입니다 >. 그 중 사전이므로 시동키는 통해 가져온 반복자가 [.] 이 >. 우리가 고말은 쓸 수 있습니다. >. >. k 에 대해 딕트: . >. >. 하지만 것보다 훨씬 빨리 것과 같습니다 >. >. k 에 대해 딕트스키스 (): . >. >. 사전에 대한 수정을 deltamove 제한 >. (다른 방법으로 의해 루프 또는 스레드) 을 위반하지 않는. >. >. - 추가 메서드을 반환하는 사전에 서로 다른 종류의 >. iterator 명시적: >. >. for key 의 딕트스트롭스키스 (): . >. >. value in 딕트.2터발 주 (): . >. >. 키, 가치 있는 딕트스트리트마스 (): . >. >. 즉, 'x' 는 '에 대한 x 의 대표 딕트 >. 딕트스트롭스키스 () '.
Python 에서 딕트스트롭스키스 (), '3', '딕트.2터발 주 ()' 와 '딕트스트리트마스 ()' 이 더 이상 지원되지 않습니다. () ',' 사용 '딕트스키스 딕트.발 주 ()' 와 '딕트.2템스 ()' 를 사용할 수 있습니다.
[1]: # 24377 https://stackoverflow.com/questions/19151/build-a-basic-python-iterator/24377
'에서' 특별한 순서 없이 반복하여 딕트 통해 해당 키를 반복, 여기서 알 수 있듯이.
편집: (이는 더 이상 해당 사건에 [Python3.6] (https://stackoverflow.com/questions/39980323/dictionaries-are-ordered-in-python-3-6) , , 참고로 it& 있지만 아직 # 39 의 않을 수도 있다)
>>> d = {'x': 1, 'y': 2, 'z': 3}
>>> list(d)
['y', 'x', 'z']
>>> d.keys()
['y', 'x', 'z']
예를 들어, 더 좋은 아이디어를 딕트.2템스 단축시킵니다 사용할 수 있다 ' ()'.
>>> d.items()
[('y', 2), ('x', 1), ('z', 3)]
따라서 너희에의 목록니다 튜플을. 이 같은 튜플 로 풀었을 때 그 위로 루프 'v' k '와' 는 각 자동으로:
for k,v in d.items():
print(k, 'corresponds to', v)
'K' 와 'v' 를 사용하여 변수 이름은 '때' 는 상당히 흔한 바디입니다 루프의 반복 딕트 경우 몇 줄 뿐이다. 좀 더 복잡한 루프를 위한 좋은 방법이 더 많이 사용할 수 있으며 설명식 이름:
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))
'키' 는 단순한 편이다.
d = {'x': 1, 'y': 2, 'z': 3}
for my_var in d:
print my_var, 'corresponds to', d[my_var]
. 이상,
d = {'x': 1, 'y': 2, 'z': 3}
for the_key, the_value in d.iteritems():
print the_key, 'corresponds to', the_value
d = {'x': 1, 'y': 2, 'z': 3}
for the_key, the_value in d.items():
print(the_key, 'corresponds to', the_value)
사전 '를 반복할 때 사용. '에서 가져온, 항상 통해 문법 시동키는 ([] 키를 사용하여 액세스할 수 있는 값은' 사전 ').
Python 에서 사용할 수 있는 '를 반복할 key-value 2 쌍, k, v, v) 와 파이썬 ()' 3 '에 대한 s.트리트마스 ᄀ씨 s.2템스 ()'.
이것은 매우 일반적인 루프을 관용구. '에서' 는 연산자에서. 키 '를 사용할 경우' 와 '를 볼 때 딕트 비활성화해야 딕트스키스 키 ()' [데이비드 Goodger& # 39 의 성어는 파이썬 기사 (아카이빙된 복제본에)] [1].
[1]: goodger/projects/pycon/2007/idiomatic/handout.html ://python.net/ ~ https://web.archive.org/web/20180411011411/http
I have a 览侩 荤례 where I 키 값을 얻기 위해, 또 반복할 필요가 딕트 페어당 손실됨을 인덱스화할, where I am. This is how I do it.
d = {'x': 1, 'y': 2, 'z': 3}
for i, (key, value) in enumerate(d.items()):
print(i, key, value)
참고로, 괄호로 묶인 중요한 키 값이 괄호 없이 확보하십시오 오버클로킹된 바루어로 " unpack" 값을 충분히 있지 않습니다.;.
>. >. # 39, & # 39, d = {x&. 1, # 39, & # 39 y&.: # 39, & # 39 z& 2;;: 3) >. 주요 d: >. .
>. 파이썬 것이라는 인식을 읽을 수 있는 핵심 요구를 어떻게 높여줍니까 미디어만을 >. 사전? 중요한 것은 특별한 포함되어 있는 파이썬? 아니면 앨리어스가 >. 변수?
사전 매핑 (mapping) 은 키 값:
d = {'x': 1, 'y': 2, 'z': 3}
우리는 이를 반복할 때마다 반복할 시동키는. 변수 이름 '키' 가 되어 디렉토리에만 설명식 리스토어와 apt 목적으로 만만치 않다.
이 경우는 바뀌엇어요 것이다.
>>> [k for k in d]
['x', 'y', 'z']
이것은 하나님이 반드시 사전 목록 (또는 다른 모든 collection type 객체를):
>>> list(d)
['x', 'y', 'z']
이 곳에 있는 가져온 는 파이썬 운행에서어떠한 컨텍스트로 하는 방법을 iter 호출하여 객체 (이 경우는 사전) 가 '' 을 반환하는지 반복자가 (이 경우 케이트레이터 객체):
>>> d.__iter__()
<dict_keyiterator object at 0x7fb1747bee08>
우리는 이 특별한 방법을 사용하여 shouldn& # 39, t, 대신 해당 내장 함수를 사용하여 집하여 우리 선고해 '국제열핵융합실험로':
>>> key_iterator = iter(d)
>>> key_iterator
<dict_keyiterator object at 0x7fb172fa9188>
하지만 우리는 내장 함수를 호출해야 반복자를 사용하는 방법 - next 투명지에 '', '다음':
>>> next(key_iterator)
'x'
>>> next(key_iterator)
'y'
>>> next(key_iterator)
'z'
>>> next(key_iterator)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
It ',' 스토피테라티온 반복자가 꽉 찰 경우 제기한다. This is how a '는' 루프 또는 파이썬 계시나니 종료하십시오 바뀌엇어요 번역 또는 발생기입니다 표현식에서는, 또는 다른 반복적인 컨텍스트입니다. It '이 제기되고 있는 한 번 반복할 수 있다' 는 항상 반복자가 스토피테라티온 스케쳐내 다시 새 이름을 합니다.
>>> list(key_iterator)
[]
>>> new_key_iterator = iter(d)
>>> list(new_key_iterator)
['x', 'y', 'z']
>. # 39, & # 39, d = {x&. 1, # 39, & # 39 y&.: # 39, & # 39 z& 2;;: 3) >. 주요 d:
만약 우리가 계속 변수 이름, 변경하겠습니다 시동키는. # 39 의 시도하시겠습니까 let& 있다.
>>> for each_key in d:
... print(each_key, '=>', d[each_key])
...
x => 1
y => 2
z => 3
반복할 경우, 우리는 우리가 원하는 값을 사용해야 하는 방법을 스발 주 ',', '딕토스 충족하거나 모두를 스이트마스':
>>> list(d.values())
[1, 2, 3]
>>> list(d.items())
[('x', 1), ('y', 2), ('z', 3)]
주어진 예에서 반복할 것이 효율적이라고 항목은 다음과 같습니다.
for a_key, corresponding_value in d.items():
print(a_key, corresponding_value)
하지만 대학 목적인 question& # 39 의 비유하사 그냥 그랬다고.
_PyDict_Next(PyObject *op, Py_ssize_t *ppos, PyObject **pkey,
PyObject **pvalue, Py_hash_t *phash)
하지만, 그것은 더 느린 반복할 키를 사용하여 'my_dict.keys ()'. 이 경우 같은 일을 했다.
for key in my_dict:
my_dict[key+"-1"] = my_dict[key]-1
이 때문에 시동키는 변경할 경우 프로그램이 실행되는 동안 런타임 오류가 만들 것이라고 주장했다. 경우 밀어버릴꺼에요 설정되었습니다 줄일 수 있는 시간을 사용할 수 있지만, 그동안 '키' 를 my_dict 운행에서어떠한 경고했다.).