data_set_01=[['A', A, 2, 'D'], ['A', T, 7, 'Y'], ['A', 2, 5, 'X']]
def draw_icons(data_set):
for value in range(len(data_set)):
if value[0] == "A" :
icon1() ## Draw icon1.
elif value[0] == "B":
icon2() ## Draws icon2.
elif value[0] == "C":
icon3() ## Draws icon3.
elif value[0] == "D":
icon4() ## Draws icon4.
draw_icons(data_set_01)
done()
我试图定义一个利用数据集(列表中的列表)的函数,其中如果列表中的第一个变量,列表是" A"运行预定义代码(在这种情况下,它们应该都是" icon1()"。但它只是提出了一个
TypeError: 'int' object has no attribute '__getitem__'
答案 0 :(得分:6)
您正在循环range()
:
for value in range(len(data_set)):
所以value
被设置为该范围内的整数,从0开始。您不能对该整数使用索引,因此value[0]
不起作用。
直接遍历data_set
以获取嵌套列表:
for value in data_set:
现在value
绑定到每个嵌套列表,value[0]
将获得其中的第一个元素。
您可以使用字典将字母映射到函数,而不是使用if
语句:
def draw_icons(data_set):
icons = {'A': icon1, 'B': icon2, 'C': icon3, 'D': icon4}
for value in data_set:
if value[0] in icons:
icons[value[0]]()
icons
存储函数对象,从字典中检索它们可以调用这些函数。
答案 1 :(得分:2)
您正在迭代包含整数值的范围对象,因此您无法将它们编入索引(如错误所示)。
我想你想迭代data_set
:
for value in data_set: