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
다른 솔루션은 이미 키와 값 쌍을 반복하는 방법을 보여주었기 때문에 저는 같은 방법을 반복하지 않겠습니다.
- Python 딕트를 통해 반복한다는 것은 키에 대해 정확히 동일한 방식으로 반복한다는 것을 의미합니다.
dict.keys()
- 키의 순서는 구현 코드에 따라 결정되며 다음과 같은 특정 순서를 기대할 수 없습니다.
키와 값은 임의의 순서로 반복되며, 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
'source' 카테고리의 다른 글
Woocommerce 속성별 검색 (0) | 2023.06.23 |
---|---|
Oracle 시간(초)으로 변환:분:초 (0) | 2023.06.23 |
Angular 2 이미지를 base64로 인코딩 (0) | 2023.06.23 |
오류: RPC 실패. curl 92 HTTP/2 스트림 0이 제대로 닫히지 않았습니다. PROTCO_ERROR(err 1) (0) | 2023.06.23 |
클라이언트와 서버 간의 공유 유형 (0) | 2023.06.23 |