/ / Prečo spojenie dvoch reťazcov vytvára chybu typu? - python

Prečo spojenie dvoch reťazcov spôsobuje chybu typu? - python

class node:
def __init__(self, parent, daughters, edge):
self.parent = parent
self.daughters = daughters
self.edge = edge
trie.append(self)
self.index = len(trie) - 1
trie[parent].daughters.append(self.index)
...

def SuffixTreeConstruction():
global trie
print(len(trie))
for node in trie:
if len(node.daughters) == 1:
node.edge = "".join([node.edge, trie[node.daughters[0]].edge])
...

Chcem vziať hrany dvoch rôznych uzlov a skombinovať ich ako reťazec. Hrany sú iterácie reťazca (for base in text: create node with base as edge), takže predpokladám, že sú to jednotlivé znakové reťazce, nie znaky (s číselnými hodnotami). Sú však zrejme celé čísla. Existuje na to nejaký zrejmý dôvod?

Traceback (most recent call last):
File "trieMatching.1.py", line 149, in <module>
SuffixTreeConstruction()
File "trieMatching.1.py", line 106, in SuffixTreeConstruction
node.edge = "".join([node.edge, trie[node.daughters[0]].edge])
TypeError: sequence item 1: expected str instance, int found

odpovede:

1 pre odpoveď č. 1

Z chyby je možné, že buď node.edge alebo trie [node.daughters [0]]. <type "int"> Pokúste sa ich tak zadať do reťazca pomocou,

node.edge = "".join([str(node.edge), str(trie[node.daughters[0]].edge]))

0 pre odpoveď č. 2

Ďalším spôsobom, ako sa vyhnúť odlievaniu, je použitie format reťazec, aby sa dosiahol rovnaký výsledok “

node.edge = "{0}{1}".format(node.edge, trie[node.daughters[0]].edge)

Odovzdávanie bude vykonané pre vás. Pridané benfit je, že môžete formátovať veci tak ako tak ... pozri format a príklady