在Python3中,如何从txt文件中提取单独的第n行并将它们分配给key:value对?

在Python3中,如何从txt文件中提取单独的第n行并将它们分配给key:value对?,python,Python,我正在学习如何编码,但我遇到了一个我没有答案的问题。我有一个文本文件,我必须从中制作三本词典: Georgie Porgie 87% $$$ Canadian, Pub Food Queen St. Cafe 82% $ Malaysian, Thai 对于这个线程,我只想问一下如何提取每个文本块的第一行并将其存储为键,将每个块的第二行存储为值?我应该只使用基本函数和循环来编写代码 这是我的代码(打开文件后): 谢谢。首先您必须阅读文件: with open("data.txt") as f

我正在学习如何编码,但我遇到了一个我没有答案的问题。我有一个文本文件,我必须从中制作三本词典:

Georgie Porgie
87%
$$$
Canadian, Pub Food

Queen St. Cafe
82%
$
Malaysian, Thai
对于这个线程,我只想问一下如何提取每个文本块的第一行并将其存储为键,将每个块的第二行存储为值?我应该只使用基本函数和循环来编写代码

这是我的代码(打开文件后):


谢谢。

首先您必须阅读文件:

with open("data.txt") as file:
    lines = file.readlines()
with子句确保在读取后将其关闭。接下来,根据您的描述,如果
索引%5
为0,则一行包含一个键。然后,下一行包含该值。仅使用该语言的“基本”元素,您就可以这样构建词典:

dic = {lines[idx].strip(): lines[idx + 1].strip() 
       for idx in range(0, len(lines), 5)}
这是一个字典理解,也可以写展开

现在还可以先压缩键和值,这样就可以非常轻松地迭代它们。这使词典理解更具可读性。不过,strip方法是必要的,因为我们希望消除换行符

entries = zip(lines[::5], lines[1::5])
dic = {key.strip(): value.strip() for key, value in entries}

请您展示一下自己的代码尝试,并解释一下代码中有哪些困难。堆栈溢出不是代码编写服务。你需要以a的形式在你自己的代码中显示你的具体问题是的,对不起,我现在添加了我的代码。这很有魅力!我唯一不明白的是字典的理解和如何展开。这是否意味着它可以作为一个单独的循环来编写?
entries = zip(lines[::5], lines[1::5])
dic = {key.strip(): value.strip() for key, value in entries}