[python] 파이썬 사전에 대한 enumerate ()

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 43

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이 응답 한 것입니다.