我试图通过从文本中读取单个字母来填充各个节点,这确实有效,但不像我希望的那样。当我尝试调用Node的attribute函数以获取内容时,将获得一个['H']而不是H,这使得无法在程序的不同部分进行比较。有没有一种方法可以删除方括号,并且只需在每个节点的内容中输入一个字母即可?
def createLattice():
test = []
with open("lattice.txt", 'r') as f:
for line in f:
items = line.split()
test.append(items[0:])
Node1 = Node(test[0])
Node2 = Node(test[1])
Node3 = Node(test[2])
Node4 = Node(test[3])
Node5 = Node(test[4])
Node6 = Node(test[5])
Node7 = Node(test[6])
Node8 = Node(test[7])
Node9 = Node(test[8])
Node10 = Node(test[9])
Node11 = Node(test[10])
Node12 = Node(test[11])
Node13 = Node(test[12])
Node14 = Node(test[13])
Node15 = Node(test[14])
Node16 = Node(test[15])
Node17 = Node(test[16])
Node18 = Node(test[17])
lattice = {Node1: [Node2, Node6, Node7],
Node2: [Node1, Node3, Node5, Node8],
Node3: [Node2, Node4, Node9],
Node4: [Node3, Node5, Node10],
Node5: [Node2, Node4, Node6, Node11],
Node6: [Node5, Node1, Node12],
Node7: [Node1, Node8, Node12, Node13],
Node8: [Node2, Node7, Node9, Node12, Node14],
Node9: [Node3, Node8, Node10, Node15],
Node10: [Node4, Node9, Node11, Node16],
Node11: [Node5, Node8, Node10, Node12, Node17],
Node12: [Node6, Node7, Node11, Node18],
Node13: [Node7, Node14, Node18],
Node14: [Node8, Node13, Node15, Node17],
Node15: [Node9, Node14, Node16],
Node16: [Node10, Node15, Node17],
Node17: [Node11, Node14, Node16, Node18],
Node18: [Node12, Node13, Node17]}
return lattice
答案 0 :(得分:1)
您的变量test
是一个列表列表,而不是字母。
在这一行:
test.append(items[0:])
您创建一个项目“ slice”,这是它自己的列表,并将其插入到test
中。
请注意,append
不会串联列表,它只会在列表末尾添加一个新项目(即使该项目本身就是列表)。
有两种方法可以解决您的问题:
只需要这样删除结肠:
test.append(items [0])
这将使test
成为字母列表,而不是列表列表。
如果出于某种原因要保留切片,请使用test
中每个列表的第一项来初始化Node
对象,如下所示:
Node1 = Node(test [0] [0])
答案 1 :(得分:0)
问题是[0:]删除了:解决问题的误解。