Python 不带循环的从文件到字典对象

Python 不带循环的从文件到字典对象,python,Python,我想读一个文本文件并将内容转换成字典。文件内容如下: a=15 b=22 c=31 d=42 有没有什么python方法可以不使用任何循环就一对二地完成这项工作? 请帮忙 我尝试了以下方法: x=open("file.txt").read() z=dict(x.replace('\n',',')) d = dict(reader(open(file), delimiter='=')) 但这给了我一个错误 预期结果: {'a': 15, 'b': 22, 'c': 31, 'd': 42}

我想读一个文本文件并将内容转换成字典。文件内容如下:

a=15
b=22
c=31
d=42
有没有什么python方法可以不使用任何循环就一对二地完成这项工作? 请帮忙

我尝试了以下方法:

x=open("file.txt").read()
z=dict(x.replace('\n',','))
d = dict(reader(open(file), delimiter='='))
但这给了我一个错误

预期结果:

{'a': 15, 'b': 22, 'c': 31, 'd': 42}
一个带有物体的衬垫:

输出:

{'a': 15, 'b': 22, 'c': 31, 'd': 42}
{'a': 15, 'b': 22, 'c': 31, 'd': 42}

如果不必将值强制转换为
int
type(如您的问题所示)-只需使用以下命令:

x=open("file.txt").read()
z=dict(x.replace('\n',','))
d = dict(reader(open(file), delimiter='='))

另一种方法是使用例程(它可以方便地转换为
int
type):

输出:

{'a': 15, 'b': 22, 'c': 31, 'd': 42}
{'a': 15, 'b': 22, 'c': 31, 'd': 42}
一个带有物体的衬垫:

输出:

{'a': 15, 'b': 22, 'c': 31, 'd': 42}
{'a': 15, 'b': 22, 'c': 31, 'd': 42}

如果不必将值强制转换为
int
type(如您的问题所示)-只需使用以下命令:

x=open("file.txt").read()
z=dict(x.replace('\n',','))
d = dict(reader(open(file), delimiter='='))

另一种方法是使用例程(它可以方便地转换为
int
type):

输出:

{'a': 15, 'b': 22, 'c': 31, 'd': 42}
{'a': 15, 'b': 22, 'c': 31, 'd': 42}
没有任何图书馆

with open('input.txt', mode='r') as f:
    str = f.read()

z = dict(x.split('=') for x in str.split('\n'))
不使用循环进行编辑:

with open('input.txt', mode='r') as f:
    str = f.read().replace('=', ' ').split()

z = dict(zip(str[::2], str[1::2]))
没有任何图书馆

with open('input.txt', mode='r') as f:
    str = f.read()

z = dict(x.split('=') for x in str.split('\n'))
不使用循环进行编辑:

with open('input.txt', mode='r') as f:
    str = f.read().replace('=', ' ').split()

z = dict(zip(str[::2], str[1::2]))

我创建了代码,将其转换为
dict
,而不使用任何循环

import json
lines = open("file.txt","r").read()
lines = "{\"" + lines.replace("\n",",\"").replace("=","\":") + "}" # create proper dictionary string. 
dict = json.loads(lines) # required to convert dictionary String to dictionary object
print(dict)
# outputs {'a': 15, 'b': 22, 'c': 31, 'd': 42}
注意:如果这对你很重要的话,有多种pythonic方法可以做到这一点


我创建了代码,将其转换为
dict
,而不使用任何循环

import json
lines = open("file.txt","r").read()
lines = "{\"" + lines.replace("\n",",\"").replace("=","\":") + "}" # create proper dictionary string. 
dict = json.loads(lines) # required to convert dictionary String to dictionary object
print(dict)
# outputs {'a': 15, 'b': 22, 'c': 31, 'd': 42}
注意:如果这对你很重要的话,有多种pythonic方法可以做到这一点


不必首先将整个文件内容存储为字符串,您可以迭代文件对象并按
'-'
拆分行,以传递给
dict
构造函数:

dict(line.split('=', 1) for line in open('file.txt'))

不必首先将整个文件内容存储为字符串,您可以迭代文件对象并按
'-'
拆分行,以传递给
dict
构造函数:

dict(line.split('=', 1) for line in open('file.txt'))

谢谢,这是一个很好的答案,但是我正在寻找一种不使用循环的方法。@KrishnaRao,但是您需要根据预期的结果将值强制转换为
int
类型。为什么不使用循环?这是要使用代码的用户的边界吗?@KrishnaRao,在这种情况下使用
dict(reader(open(file),delimiter='='))
。@KrishnaRao,你也可以尝试使用
pandas.read_csv
-它可以方便地转换为int类型谢谢,这是一个很好的答案,但我正在寻找一种不使用循环的方法。@KrishnaRao,但您需要根据预期结果将值强制转换为
int
type为什么。是否不使用循环?这是要使用代码的用户的边界吗?@KrishnaRao,在这种情况下,使用
dict(reader(open(file),delimiter='='))
。@KrishnaRao,您也可以尝试使用
pandas.read\u csv
-它可以方便地转换为int类型。我建议您在回答中补充这不是一个好方法(从Pythonic的观点来看),所以新来者会避免这种情况。但出于教育目的,这是一种非常有创造性的方法。@AlexanderSantos我在我的答案中添加了一条注释。@CodeIt,如果你对你的答案感兴趣,我必须说1)它会将整个文件内容读入内存(分配给标识符
)2)它焊接了一个带有多个替换的人工json字符串,不应被视为健壮的解决方案。不应该在生产环境中使用它。(请不要在生产中使用它)@RomanPerekhrest我同意你的观点,它不应该在生产环境中使用。但我认为这是OP的合适解决方案,因为问题的目的是不使用任何循环来获取字典。无论如何,我也对你的解决方案投了赞成票,认为这是一种pythonic的实现方式。我建议你在回答中补充一点,这不是一种好的方法(从pythonic的角度来看),因此新手会避免这种情况。但出于教育目的,这是一种非常有创造性的方法。@AlexanderSantos我在我的答案中添加了一条注释。@CodeIt,如果您对答案的无偏见审查感兴趣,我必须说1)它会将整个文件内容读入内存(分配给标识符
)2)它焊接了一个带有多个替换的人工json字符串,不应被视为健壮的解决方案。不应该在生产环境中使用它。(请不要在生产中使用它)@RomanPerekhrest我同意你的观点,它不应该在生产环境中使用。但我认为这是OP的合适解决方案,因为问题的目的是不使用任何循环来获取字典。无论如何,我也投票支持你的解决方案,认为这是一种实现它的python方法。