开始学习python,如果很初级,请抱歉。
我想使用__str__()
从字典中打印所有对,字典是我类的实例属性。
我执行以下操作:
from collections import defaultdict
class Node:
nextindex = 0
def __init__(self):
self.targetnode = defaultdict(Node)
self.index = Node.nextindex
Node.nextindex += 1
def add(self, line, pos=0):
if pos == len(line):
self.targetnode[""] = None
else:
c = line[pos]
self.targetnode[c].add(line, pos+1)
def __str__(self):
for c, tnode in self.targetnode.items():
return "Node %d Alphabet %s Targetnode %d" % (self.index, c, tnode.index)
root = Node()
for line in file:
root.add(line)
print(root)
file
包含一个单词列表,每行一个单词,就像:
her
his
here
我所期望的:
Node 0 Alphabet h Targetnode 1
Node 1 Alphabet e Targetnode 2
Node 2 Alphabet l Targetnode 3
等
我真正得到的是:
Node 0 Alphabet h Targetnode 1
(h是我的单词表中的第一个字母)
有人可以告诉我为什么它只返回一行吗?非常感谢!
答案 0 :(得分:0)
您需要在循环后返回,或使用str.join
:
def __str__(self):
return '\n'.join([
'Node %d Alphabet %s Targetnode %d'
% (self.index, c, tnode.index)
for c, tnode in self.targetnode.items()
])
如果不想用换行符分隔每个字符,请将'\n'
更改为逗号', '