【发布时间】:2017-09-21 02:51:48
【问题描述】:
所以我无法理解为什么会收到此错误“TypeError:'int' object is not subscriptable”,我正在使用的代码如下:
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()
错误发生在“for j in range(len(chart[i])):” 我要做的就是打印图表。我已经查看了这个错误的其他答案,但似乎没有什么能满足这段代码中发生的事情
【问题讨论】:
-
看起来
chart是一个数字。调试找出原因。 -
您的代码要求 fill_chart 返回二维数组,但它返回的是一个整数。