enumerate
목록을 반복하는 데 사용 하는 것을 알고 있지만 사전에서 시도했지만 오류가 발생하지 않았습니다.
암호:
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
print(i, j)
산출:
0 0
1 1
2 2
3 4
4 5
5 6
6 7
누군가 출력을 설명 할 수 있습니까?
답변
이미 제공된 답변 외에도 사전의 키와 값을 모두 열거 할 수있는 Python의 매우 멋진 패턴이 있습니다.
사전 의 키 를 열거하는 일반적인 경우 :
example_dict = {1:'a', 2:'b', 3:'c', 4:'d'}
for i, k in enumerate(example_dict):
print(i, k)
출력되는 내용 :
0 1
1 2
2 3
3 4
그러나 키와 값을 모두 열거 하려면 다음 과 같이하십시오.
for i, (k, v) in enumerate(example_dict.items()):
print(i, k, v)
출력되는 내용 :
0 1 a
1 2 b
2 3 c
3 4 d
답변
출력의 첫 번째 열은 각 항목의 색인이고 두 번째 열은 enumm
키입니다. 사전을 반복하려면 .items ()를 사용하십시오.
for k, v in enumm.items():
print(k, v)
출력은 다음과 같아야합니다.
0 1
1 2
2 3
4 4
5 5
6 6
7 7
답변
추가 할 것이라고 생각했습니다. 사전의 인덱스, 키 및 값을 열거하려면 for 루프가 다음과 같아야합니다.
for index, (key, value) in enumerate(your_dict.items()):
print(index, key, value)
답변
dict1={'a':1, 'b':'banana'}
Python 2.x에서 사전을 나열하려면 :
for k,v in dict1.iteritems():
print k,v
Python 3.x에서는 다음을 사용합니다.
for k,v in dict1.items():
print(k,v)
# a 1
# b banana
마지막으로, 다른 사람들이 지적했듯이, 실행중인 인덱스를 원한다면 그것도 가질 수 있습니다.
for i in enumerate(dict1.items()):
print(i)
# (0, ('a', 1))
# (1, ('b', 'banana'))
그러나 이것은 전화 번호부 스타일 조회를위한 효율적인 데이터 구조 인 사전 (지도, 연관 배열) 의 목적을 무효화합니다 . 사전 순서는 구현에 부수적 일 수 있으므로 신뢰할 수 없습니다. 주문이 필요한 경우 OrderedDict를 대신 사용하세요.
답변
enumerate
따라서 사용하고 있기 때문에 i
실제로 키 자체가 아니라 키의 색인입니다.
따라서 키가 없더라도 3
행의 첫 번째 열에 들어 갑니다.3 4
3
enumerate
현재 반복 번호를 제공하는 동시에 데이터 구조 (목록 또는 사전)를 반복합니다.
따라서 여기의 열은 반복 번호와 사전의 키입니다. enum
다른 솔루션은 이미 키와 값 쌍을 반복하는 방법을 보여 주었으므로 동일한 방법을 반복하지 않을 것입니다.
답변
enumerate()
목록에서 작업 할 때 실제로 목록에있는 항목의 색인과 값을 제공합니다. 예를 들면 :
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i, j in enumerate(list):
print(i, j)
준다
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
여기서 첫 번째 열은 항목의 인덱스를 나타내고 두 번째 열은 항목 자체를 나타냅니다.
사전에서
enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, j in enumerate(enumm):
print(i, j)
그것은 출력을 제공합니다
0 0
1 1
2 2
3 4
4 5
5 6
6 7
여기서 첫 번째 열은 key:value
쌍 의 색인을 제공 하고 두 번째 열은 keys
사전을 나타냅니다 enumm
.
따라서 첫 번째 열이 keys
이고 두 번째 열이되게하려면 (Python 2) 또는 (Python 3)을 values
시도하는 것이 좋습니다.dict.iteritems()
dict.items()
for i, j in enumm.items():
print(i, j)
산출
0 1
1 2
2 3
4 4
5 5
6 6
7 7
짜잔
답변
확실히 혼란스러워 보일 것입니다. 그래서 이것이 진행되고 있습니다. enumerate의 첫 번째 값 (이 경우 i)은 0에서 시작하는 다음 인덱스 값을 반환하므로 0, 1, 2, 3, … 사전에있는 내용에 관계없이 항상 이러한 숫자를 반환합니다. enumerate의 두 번째 값 (이 경우 j)은 딕셔너리 / 열거 형 (파이썬에서는 딕셔너리라고 부릅니다)의 값을 반환합니다. 당신이 정말로하고 싶은 것은 roadrunner66이 응답 한 것입니다.