Python 如何打开txt文件列表,将其转换为字符串,然后查看它们是否匹配给定词典中的任何键

Python 如何打开txt文件列表,将其转换为字符串,然后查看它们是否匹配给定词典中的任何键,python,for-loop,dictionary-comprehension,ordereddictionary,string-search,Python,For Loop,Dictionary Comprehension,Ordereddictionary,String Search,我有一个文本文件列表(列表_4),格式为cv1.txt、cv2.txt、cv3.txt等,最多可达cv20.txt。我想使用for循环以独立方式打开和读取这些文件,并将它们转换为字符串。这是我的代码: list_5 = [] for i in list_4: file = open(i) line = file.read().replace('\n', '') list_5.append(line) file.close() print(list_5) 这部分代

我有一个文本文件列表(列表_4),格式为cv1.txt、cv2.txt、cv3.txt等,最多可达cv20.txt。我想使用for循环以独立方式打开和读取这些文件,并将它们转换为字符串。这是我的代码:

list_5 = []
for i in list_4:
    file = open(i)
    line = file.read().replace('\n', '')
    list_5.append(line)
    file.close()
print(list_5)
这部分代码用于打开、读取并转换为字符串我的txt文件列表4

现在我有了一本名为my_dict的字典,其格式为{‘弃置’:-1,“弃置”:1,‘弃置’:0……}

我想使用for循环将先前从list_5生成的字符串元素与my_dict的键对进行比较,为list_4的每个字符串元素输出一系列整数

例如:

for key in my_dict:
    for i in list_4:
        file = open(i, 'r')
        line = file.read()
        file.close()
        if key in line:
            list_6.append(my_dict[key])
print(list_6)
但是,问题在于,此for循环的输出是一系列混乱的键和文件:

['-1cv1.txt', '-1cv8.txt', '-1cv17.txt', '1cv4.txt', '1cv6.txt', '1cv1.txt', ...]
通过以下方式获得:

for key in my_dict:
    for i in list_4:
        file = open(i, 'r')
        line = file.read()
        file.close()
        if key in line:
            list_6.append(str(my_dict[key]) + i)
print(list_6)
我是否有办法获得列表5中每个字符串元素的特定键,即

清单5:[‘母牛咕咕叫’,‘猫喵喵叫’,…] 列表6:[0,1,-1],[0,0,0],…]


可能需要在列表中使用列表?不确定,请提供帮助!

如果我正确理解此问题,您希望最终输出如下所示:

[ ( 'the cow goes moo', [0, 1, -1] ), ( 'the cat goes meow', [0, 0, 0]),... ]
如果是这样,可以尝试:

for line in list_5: # using list_5 instead of list_4
    sub_list = []
    for key in my_dict:
        if key in line:
            sub_list.append(my_dict[key])
    list_6.append(sub_list)
combined = list( zip( list_5, list_6 ))
print( combined )
(如果所有
项都是以空格分隔的,则可以通过拆分每行并迭代该行而不是字典键来加快脚本速度,但现在忽略该行…)
希望这会有所帮助。

请以正确的格式列出您的代码。有关更多信息,请单击您编写问题部分的“帮助”部分。刚刚修复,对此表示抱歉。好的,谢谢,这使我们更容易阅读。我已删除了我的否决票。您的循环顺序是相当没有帮助的-通过将循环置于在字典键上循环中的er文件,您必须不必要地多次读取每个文件。@alaniwi我尝试使用嵌套的for循环,但无法生成输出,我对这些不太有经验。这很有效,感谢您的帮助@mark_s!