在Python中如何在遍历嵌套列表时访问对象的属性?
我有一个对象,定义如下:
class word(object): #object class
def __init__(self, originalWord=None, azWord=None, wLength=None):
self.originalWord = originalWord
self.azWord = azWord
self.wLength = wLength
我有一个叫做 results[] 的列表,这个列表里的每个索引 x 都包含另一个长度为 x 的单词对象列表。例如,在 results[3] 中,有一个长度为 3 的对象列表,其中一个对象可能是 (dog, gdo, 3)。我还有一个叫 maxL 的值,它表示 results[] 列表的长度。我该如何遍历 results[] 及其所有列表,以访问(并打印)我想要的属性呢?
这是我目前的代码,但我知道语法是错的:
for x in range(0,maxL):
for y in results[x]:
print(results[x][y].azWord)
2 个回答
2
在第一个循环中:
for x in range(0,maxL):
你是在遍历索引。在第二个循环中:
for y in results[x]:
你是在遍历元素。在这个例子里,就是在遍历一个列表里的元素。所以你可以像这样访问属性:
print(y.azWord)
# ...
注意:
我建议你遵循Python的命名规范。把你的类命名为
Word
。我还建议你使用更具代表性的名称,比如:
for i in range(0, maxL): for element in results[i]: print(element.azWord)
你也可以在第一个循环中遍历元素。除非你想修改元素或者需要使用索引,否则应该这样做:
for words_list in results: for word in words_list: print(word.azWord)
2
你为什么不直接像这样遍历列表呢:
for row in results:
for item in row:
print(item.azWord)
因为在你的例子中,results[x][y]
是不对的。y
是一个对象,不是一个整数,所以你不能用它来从 results
中索引。我建议你使用上面的代码来直接获取对象。
或者你可以用一种更接近你原始代码的方式:
for x in range(0,maxL):
for y in results[x]:
print(y.azWord) # note y is the object itself, not an index