2017-09-21 1 views
0

なぜこのエラーが発生するのか理解できません。「TypeError: 'int'オブジェクトは添え字ではありません」使用しているコードはPythonのTypeErrorに関する問題: 'int'オブジェクトに添字が付いていない

def make_chart(size, items): 
    keys = list(items.keys()) 
    chart = list() 
    row = [] 
    for r in range(len(keys)): 
     for i in range(size): 
      row.append({"w":0, "v":0, "keys":[]}) 
     chart.append(row) 
    return chart 

def fill_chart(size, items, chart): 
    keys = list(items.keys()) 
    vals = [] 
    wts = [] 
    for v in range(len(chart)): 
     for y in range(len(chart[v])): 
      vals.append(items[keys[v]]['w']) 
      wts.append(items[keys[v]]['v']) 
    w, h = size +1, len(vals) 
    table = [[ 0 for x in range(w)] for y in range(h)] 
    for index in range(len(vals)): 
     for weight in range(w): 
      if wts[index] > weight: 
       table[index][weight] = table[index -1][weight] 
       continue 
      prior_values = table[index - 1][weight] 
      new_option_best = vals[index] + table[index - 1][weight - wts] 
      table[index][weight] = max(prior_values, new_option_best) 
    solution_arr = [] 
    for x in table: 
     for y in x: 
      solution_arr.append(y) 
    return max([x for y in table for x in y]) 

def main(): 
    iphone = {"w": 1, "v": 3000} 
    guitar = {"w": 1, "v": 2000} 
    tablet = {"w": 2, "v": 3000} 
    dog = {"w":1, "v": 4000} 
    items = {"iphone":iphone, "guitar":guitar, "tablet":tablet, "dog":dog} 

    chart = make_chart(4, items) 
    chart = fill_chart(4, items, chart) 

    for i in range(len(items.keys())): 
     print("---{0}".format(list(items.keys()))[i]) 
     for j in range(len(chart[i])): 
      print(chart[i][j]) 
    print(len(chart)) 

if __name__ == "__main__": 
    main() 

エラーがで発生している "範囲内のjについて(LEN(チャート[i])と):" 私がやろうとしている すべては、チャートを印刷しています。私はこのエラーの他の答えを見てきましたが、このコードで何が起こっているかを確認するものはありません。

+0

[エラー: 'int'オブジェクトはサブスクリプトできません](https://stackoverflow.com/questions/8220702/error-int-object-is-not-subscriptable) – Carcigenicate

+1

'chart'のようです数。なぜデバッグするかを調べる。 – Carcigenicate

+0

あなたのコードでは、fill_chartは2次元配列を返しますが、代わりに整数を返します。 – Quinn

答えて

2

あなたのfill_chart関数はリストではなく整数を返します。

関連する問題