주문 사전의 값을 변경해야합니다. for
루프를 사용했지만 값이 변경되지 않았습니다. 나는 브래킷 []
표기법을 직접 사용하기보다는 루프의 변수 이름에 할당했기 때문에 이것이 발견되었습니다. 루프 변수 이름으로 루프의 값을 참조 할 수없는 이유는 무엇입니까?Python ordered dictionary : for 루프를 사용하여 사전 값을 변경하는 데 [] 부호가 필요한 이유는 무엇입니까?
는 시도 :
idx = 0
for name,val in settings.items():
idx += 1
val = idx
print name,val
결과 : 예상 OrderedDict([('Accel X Bias', None), ('Mag X Bias', None)])
: OrderedDict([('Accel X Bias', 1), ('Mag X Bias', 2)])
전체 코드 :
import collections
settings = collections.OrderedDict([('Accel X Bias', None), ('Mag X Bias', None)])
idx = 0
print "\nIn loop, values are changed:"
for name,val in settings.items():
idx += 1
val = idx
print name,val
print "\nAfter Loop, values didn't change:\n",settings
for name,val in settings.items():
idx += 1
val = idx
settings[name] = idx
print "\nAfter Loop, bracket notation used, values changed successfully:\n",settings
이 아마 그래서 내가 관심이있는 몇 가지 기본적인 프로그래밍 원칙이다 '왜'그래서 나는 더 착각하지 않는다. 이런 식으로. 감사!