python - 程序无法识别多次出现的单词 python(在 linux 上)
问题描述
我正在通过从示例文本创建一个有向图来制作一个论文生成器,其中单词是节点,并且在单词和跟随它的任何单词之间存在有向边。我正在通过字典形成节点,但程序似乎没有在第一个单词之后读取出现的单词。
tH = {}
with open('ex','r') as f:
for line in f:
valHold = [w.lower() for w in line.split()]
for x in valHold:
if x not in tH:
tH[x] = []
if x != valHold[-1] and valHold[valHold.index(x) + 1] not in tH[x]:
tH[x].append(valHold[valHold.index(x) + 1])
print(tH)
我希望输出是
{'the' : ['sun', 'moon'], 'sun' : ['the'], 'moon' : []}
当文件'ex'包含字符串时
'the sun the moon'
但相反的输出是
{'the' : ['sun'], 'sun' : ['the'] 'moon' : []}
解决方案
而不是for x in valHold:
遍历 valHold 中的每个单词,您需要遍历每个第二个单词,即 x = valHold[0](store valHold[1]),x =valHold[2](store valHold[3]) 等等上。你可以这样做:
for i in range(0, len(valHold), 2):
x = valHold[i]
if x not in tH:
tH[x] = []
if x != valHold[-1] and valHold[i + 1] not in tH[x]:
tH[x].append(valHold[i + 1])
推荐阅读
- docker - K8S - Docker - ARM unbutu 64 位 - qemu:未捕获的目标信号 11(分段错误) - 核心转储
- python-3.x - 什么可能导致我的代码给出错误的答案?
- apache-flink - 如何在 Flink 的 HiveCatalog 中添加分区位置?
- javascript - 无法读取未定义的属性“发送”:Discord 机器人创建通道并向其发送消息然后对其做出反应
- python - PyTest 用于 Python 中的表
- scalardb - com.scalar.db.exception.storage.NoMutationException:未应用任何突变。使用 ScalarDB 时出错
- asp.net - Repeater 和 UpdatePanel 在命令上更改按钮背景色
- wordpress - Wordpress 类别帖子按标签过滤
- html - 图片卡/w Avatar 的 CSS 边框问题,当 600 像素或更大时,我无法将卡片与表单对齐
- javascript - 如何将 cookie 从一个页面写入另一个页面