2016-10-13 2 views
0

내가 루핑하는 사전이 있습니다. 값 == 특정 숫자 (이 경우 0)이면 for 루프의 다음 반복 값은 해당 값의 2 배가됩니다.for 루프의 다음 반복에 액세스하는 방법

내가 좋아하는 사전이 다음

d = {'a' : 1, 'b' : 0, 'c' : 4} 

for 루프와 사전을 통해 내가 루프는 내가 2 다음 반복을 곱하고자 할 때 경우 현재 반복 = 0

이 j는

d = {'a' : 2, 'b' : 0, 'c' : 9} 

입니다 :

for k, v in d.items(): 
    if k == 0: 
     [next iteration v = v * 2] 
    else: 
     v = v + 1 

그래서 나는이 같은 사전으로 끝낼 기대 간단한 예를 들겠지만, 내가 성취하려고하는 것을 잘 보여줄 수 있습니다.

감사합니다.

+4

문제는 사전을 사용하고 있으며 순서를 유지하지 않아 다른 실행에 대해 다른 값을 얻을 가능성이 높다는 것입니다. – Lafexlos

+0

이것을 달성 할 수있는 다른 방법을 알고 있습니까? –

답변

2

orderedDict을 사용하여 사전을 만들고 주문을 유지할 수 있습니다.

알고리즘을 보면, 0이 아닌 경우 모든 값에 1을 더하고 0이면 다음 항목을 먼저 곱한 다음 1을 더합니다. 기본적이고 쉬운 방법 중 하나는 다음 값을 곱해야하는지 아닌지를 결정하는 깃발을다는 것입니다.

0

불행히도 사전은 사전을 사용하지 않습니다. 목록과 같은 것을 사용하게 될 것입니다. 당신이 목록에서 키/값 쌍을 설정할 것이라고 확신하지 못합니다.