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
누군가 출력을 설명 할 수 있습니까?
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
dictionary.items()
튜플 목록으로 키-값 쌍이있는 뷰 객체를 얻기 위해 (열거없이) 간단히 사용할 수도 있습니다 .
출력의 첫 번째 열은 각 항목의 색인이고 두 번째 열은 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)
idx, (k, v) in enumerate(d.items()):
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
이고 두 번째 열이되게하려면 (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이 응답 한 것입니다.
dict.keys()
키와 값은 무작위가 아닌 임의의 순서로 반복되고 Python 구현에 따라 다르며 사전의 삽입 및 삭제 기록에 따라 다릅니다. 키, 값 및 항목보기가 사전에 개입하지 않고 반복되는 경우 항목의 순서가 직접 일치합니다.
그래서 첫 번째 열에 0에서 7까지의 인덱스가 표시됩니다. 그들은에 의해 생성되며 enumerate
항상 올바른 순서로되어 있습니다. 또한 두 번째 열에서 dict의 키 0-7을 볼 수 있습니다. 정렬되지 않았습니다.
Python3 :
하나의 솔루션 :
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 = {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'))]
for i, j in enumerate(enumm)
얻을i
때마다 반복에서 증가하고j
으로부터 일반적인 항목을 잡는다enumerate
이 경우 사전 인 함수 인수. dicts를 반복하는 것은 본질적으로 키를 반복하는 것입니다.