python - 使用关键字的行号创建字典

标签 python dictionary

我正在尝试通读一个 txt.file 并打印关键字出现的行号。这是我目前所拥有的:

def index(filename, word_lst):

    dic = {}
    line_count = 0

    for word in word_lst:
        dic[word] = 0

    with open(filename) as infile:
        for line in infile:
            line_count += 1
            for word in word_lst:
                if word in line:
                    dic[word] = line_count

    print(dic)

输出:

>>>{'mortal': 30, 'demon': 122, 'dying': 9, 'ghastly': 82, 'evil': 106, 'raven': 120, 'ghost': 9}

上面的输出有些正确。我遇到的问题是,例如,raven 应该打印 44、53、55、64、78、97、104、111、118、120,而不仅仅是它出现的最后行号 (120)。

我已经在这个问题上工作了整整一天,但我不确定如何在不覆盖字典中已存储的行号的情况下添加关键字出现的所有行号。

我是 Python 的新手,所以如果我遗漏了一些简单的东西,我深表歉意,如果有任何提示,我将不胜感激。

最佳答案

要从单词映射多个行号,您需要映射到list,而不是int:

def index(filename, word_lst):

    dic = {}
    line_count = 0

    for word in word_lst:
        dic[word] = []   # <---

    with open(filename) as infile:
        for line in infile:
            line_count += 1
            for word in word_lst:
                if word in line:
                    dic[word].append(line_count)  # <----

    print(dic)

关于python - 使用关键字的行号创建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33716072/

相关文章:

Python 无法引用调用类中的列表

python - Airflow mysql 到谷歌云存储,byte-like object required 错误

python - 来自列表列表的字典理解python

c++ - 如何迭代这个 map ?

python - 获取字典中匹配键的值

python - 随机 "int is not subscriptable"行为

python - Azure函数: Can't open lib 'ODBC Driver 17 for SQL Server'

python - 如何识别字符串中的单个字符

python - OpenCV-contrib/Python/Windows:Tracker.write()在matrix_wrap.cpp中引发错误,Tracker.read()使Python崩溃

python - Plotly - 在 plotly 上绘制 k-means 集群是行不通的