source

Python 사전을 위해 열거()

nicesource 2023. 6. 23. 22:16
반응형

Python 사전을 위해 열거()

우리가 사용하는 것을 압니다.enumerate목록을 반복하기 위해 사전에 시도했지만 오류가 발생하지 않았습니다.

코드:

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}

for i, key in enumerate(enumm):
    print(i, key)

출력:

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()목록에서 작업할 때 실제로 목록 내 항목의 인덱스와 값을 제공합니다.예:

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및 두 번째 열은 다음과 같습니다.values시험해 보는 것dict.iteritems()(파이썬 2) 또는dict.items()(파이썬 3)

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실제로는 키 자체가 아니라 키의 인덱스입니다.

그래서, 당신은 받고 있습니다.3행의 첫 번째 열에3 4열쇠가 없어도3.

enumerate데이터 구조(목록 또는 사전)를 통해 반복되는 동시에 현재 반복 번호도 제공합니다.

따라서 여기에 있는 열은 사전에서 키 다음에 오는 반복 번호입니다.enum

다른 솔루션은 이미 키와 값 쌍을 반복하는 방법을 보여주었기 때문에 저는 같은 방법을 반복하지 않겠습니다.

  1. Python 딕트를 통해 반복한다는 것은 키에 대해 정확히 동일한 방식으로 반복한다는 것을 의미합니다.dict.keys()
  2. 키의 순서는 구현 코드에 따라 결정되며 다음과 같은 특정 순서를 기대할 수 없습니다.

    키와 값은 임의의 순서로 반복되며, Python 구현에 따라 다르며, 사전의 삽입 및 삭제 기록에 따라 다릅니다.사전에 대한 중간 수정 없이 키, 값 및 항목 보기를 반복하면 항목 순서가 직접 일치합니다.

그렇기 때문에 첫 번째 열에 0부터 7까지의 지수가 표시됩니다.은 그은생입다니자산들에서 생산됩니다.enumerate그리고 항상 올바른 순서에 있습니다.또한 두 번째 열에는 딕트 키 0부터 7까지 표시됩니다.정렬되지 않았습니다.

그것은 분명 혼란스러워 보일 것입니다.이것이 지금 일어나고 있는 일입니다.열거형의 첫 번째 값(이 경우 i)은 0부터 시작하는 다음 인덱스 값을 반환합니다(0, 1, 2, 3, ...).사전에 무엇이 있는지에 관계없이 항상 이러한 숫자를 반환합니다.열거형의 두 번째 값(이 경우 j)은 사전/엔럼의 값을 반환하는 것입니다(파이썬에서는 사전이라고 부릅니다).당신이 정말로 하고 싶은 것은 로드러너66이 응답한 것입니다.

파이썬3:

단일 솔루션:

enumm = {0: 1, 1: 2, 2: 3, 4: 4, 5: 5, 6: 6, 7: 7}
for i, k in enumerate(enumm):
    print("{}) d.key={}, d.value={}".format(i, k, enumm[k]))

Output:
0) enumm.key=0, enumm.value=1
1) enumm.key=1, enumm.value=2
2) enumm.key=2, enumm.value=3
3) enumm.key=4, enumm.value=4
4) enumm.key=5, enumm.value=5
5) enumm.key=6, enumm.value=6
6) enumm.key=7, enumm.value=7

다른 예:

d = {1 : {'a': 1, 'b' : 2, 'c' : 3},
     2 : {'a': 10, 'b' : 20, 'c' : 30}
    }    
for i, k in enumerate(d):
        print("{}) key={}, value={}".format(i, k, d[k])

Output:    
    0) key=1, value={'a': 1, 'b': 2, 'c': 3}
    1) key=2, value={'a': 10, 'b': 20, 'c': 30}

키 내부에 인덱스를 포함하는 것이 유용할 수 있습니다.

d = {'a': 1, 'b': 2}
d = {(i, k): v for i, (k, v) in enumerate(d.items())}

출력:

{(0, 'a'): True, (1, 'b'): False}
d = {0: 'zero', '0': 'ZERO', 1: 'one', '1': 'ONE'}

print("List of enumerated d= ", list(enumerate(d.items())))

출력:

List of enumerated d=  [(0, (0, 'zero')), (1, ('0', 'ZERO')), (2, (1, 'one')), (3, ('1', 'ONE'))]

언급URL : https://stackoverflow.com/questions/36244380/enumerate-for-dictionary-in-python

반응형