是否可以使用python将打印输出保存在dict中?

时间:2018-03-14 20:25:04

标签: python python-3.x dictionary save output

我想知道,如果可以将此代码的输出保存到字典中(也许它也是错误的数据类型)。我还没有在编码方面有所考验,所以我无法想到它可以运作的方式。 我想创建一个dicitionary,其中包含txt.-文件的行以及相应行的值。最后,我想创建一个代码,用户可以选择通过输入搜索行中的单词 - 输出应该返回相应的行。有人有什么建议吗?提前致谢!干杯!

filepath = 'myfile.txt'  
with open(filepath) as fp:  
   line = fp.readline()
   cnt = 1
   while line:
       print("Line {}: {}".format(cnt, line.strip()))
       line = fp.readline()
       cnt += 1

2 个答案:

答案 0 :(得分:1)

这应该这样做(使用您作为框架提供的代码,只需要一行额外的行将其存储在字典中):

my_dict={}

filepath = 'myfile.txt'  
with open(filepath) as fp:  
   line = fp.readline()
   cnt = 1
   while line:
       # print("Line {}: {}".format(cnt, line.strip()))
       my_dict[str(line.strip())] = cnt
       line = fp.readline()
       cnt += 1

然后,您可以提示用户输入如下:

usr_in = input('enter text to search: ')

print('That text is found at line(s) {}'.format(
                  [v for k,v in my_dict.items() if usr_in in k]))

答案 1 :(得分:1)

要将字符串值作为键存储在字典中,将行号存储为值,您可以尝试类似:

filepath = 'myfile.txt' 

result_dict = {}
with open(filepath) as fp:  
    for line_num, line in enumerate(fp.readlines()):
        result_dict[line.strip()] = line_num+1

或者,使用dictionary comprehension,上面的代码可以是:

filepath = 'myfile.txt' 

with open(filepath) as fp:  
    result_dict = {line.strip(): line_num+1 
                        for line_num, line in enumerate(fp.readlines())}

现在搜索并返回包含单词的所有行:

search_result = [{key: value} for key, value in result_dict.items() 
                                  if search_word in key]