python检查字符串包含所有字符

2024-04-20 03:57:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在阅读一长串单词,我为列表中的每个单词建立了一个节点。每个节点在列表中的位置都有一个属性“word”。在

我尝试将一个节点连接到下一个节点,如果下一个节点是上一个节点,只添加一个字母

我还按字母顺序排列每个字符的每个单词,以便CAT->;ACT

我想从每个唯一的起始词到所有可能的链之间画一条边,这样我就可以看到列表中所有可能的链。在

例如

一声巨响

但是A--x->;T

这是我的尝试

for i in range(0, G.number_of_nodes()-1):

    if ( ( (len(G.node[i]['word'])+1)  == len(G.node[i+1]['word']) )      and (G.node[i]['word'] in G.node[i+1]['word'])):
        print G.node[i]['word'], G.node[i+1]['word']

给了我这个

^{pr2}$

What the word list and the alphabetical list looks like

为什么我看不见里面?在

还有,阿格朗特·阿格朗斯特应该在那里,但我不明白为什么,还有其他很多对

你觉得我哪里做错了?在


Tags: andtheingtnode列表len属性
3条回答

您似乎只是将每个节点与另一个节点进行比较,所以

“IN”直接跟在单词表中的“I”后面,但“INW”不在“IN”之后

看起来像是一个正式的语言问题。如何处理循环节点?在

INW在你给的单子里。在

AGNRT AGNRST不在列表中,因为您从一个字母开始,该字母必须在下一个单词中—例如I->;in,但in不在AGNRT或AGNRST中

问题是,您只比较列表中相邻出现的单词,即单词i和{},例如I和{}相邻出现,WIN和{},但是IN和{}相距甚远。似乎你想比较所有可能的单词,这需要一个更复杂的算法。有个主意:

  1. 制作一个字典,其中的关键字是经过排序的单词,值是实际单词的列表,例如{"ACT": ["CAT", "ACT", "TAC], ...}。对此,collections.defaultdict(list)将很有用。在
  2. 按长度对单词的完整输入列表进行排序。您可以使用list.sort(key=len),假设您只有一个单词列表。在
  3. 迭代按长度排序的列表。对于每个单词,遍历长度的每个子集n-1。像for i in range(len(word)): process(word[:i] + word[i+1:])。你可能要小心这里的重复。在
  4. 对于每个子集,对子集进行排序并在字典中查找。将字典中每个单词的值(实际单词的列表)链接到较大的单词。在

相关问题 更多 >