2017-10-27 12 views
1

안녕 난 아직도 파이썬에서 아주 새로운 해요 및 싶습니다 알고 KeyError를 : 0KeyError를이 라인은 왜 0 파이썬

이는 관련 부분을 다음과 코드의 표기법의 실수 일 뿐이며 그것을 해결하는 가장 좋은 방법은 무엇입니까? [x, y] 의해

productname = ('milk', 'yoghurt', 'buttermilk') 
    fillingrate = (1.5, 1.0, 2.0) 

    day = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14) 

    demand = [ 
    (5, 4, 3, 3, 4, 9, 13, 5, 4, 4, 3, 5, 10, 12), 
    (3, 5, 3, 5, 5, 4, 3, 4, 3, 4, 3, 4, 5, 5), 
    (3, 3, 5, 4, 4, 5, 4, 3, 4, 3, 4, 5, 4, 5) 
    ] 

    T = range (len(day)) 
    P = range (len(productname)) 


    for p in P: 
     for t in T: 
      RP[P,T] = model.addVar (lb = 0, vtype = GRB.CONTINUOUS, 
      name = 'Regular Production[' + str(p) + ',' + str(t) + ']') 
      print(demand[p][t]) 
      print(fillingrate[p]) 
      RP[p][t] = demand[p][t]/fillingrate[p] 
      print(RP[p][t]) 
+0

범위의 튜플 인'[P, T]'를 사용하여'RP'의 색인을 생성하고 있습니다. 'RP'는 어디에 선언 되었습니까? 'RP'는 어디에서'[0]'원소를 얻습니까? – pat

답변

4

인덱싱 절대적하지 [x][y] 의해 인덱싱 같은. 전자는 튜플을 사용하여 인덱싱 된 단일 차원을 생성하지만 후자는 비정형 2 차원 배열을 생성합니다.

원하는 값이 들어있는 색인 [x]에 새 개체를 만들어야합니다.

1

Pp과 같지 않습니다. 코드에서 첫 번째는 범위이고 두 번째는 해당 범위의 정수입니다.

따라서 RP[P,T]이라는 식은 두 가지 방식으로 잘못되었습니다. 잘못된 하위 첨자를 사용하고 잘못된 답변을 조합합니다 (다른 대답이 지적한 것처럼).

대신 RP[p][t]이 필요하다고 생각합니다.