Python:从文本文件中读取字典

标签 python dictionary

我遇到了一个丑陋的问题。我收到了以下文本文件,它是从另一个 Python 文件输出的。从之前的文件中,它是吐出到这个文本文件中的字典。

文本文件(名为“output.txt”):

0:[([(11, 191), (11, 170), (14, 170), (11, 188)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]
90:[([(95, 170), (95, 2), (119, 2), (95, 146)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]
180:[([(182, 2), (182, 23), (179, 23), (182, 5)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]
270:[([(98, 23), (98, 191), (74, 191), (98, 47)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]

我对阅读文本文件相当熟悉,但这个让我感到难过。整个问题的愚蠢之处在于,我实际上需要以字典格式提供给我的文件,所以我基本上只是尝试读取提供给我的文件。 问题是在读入它时,Python 不知道它是一个字典,而是给我字符串。 无论如何,是否可以将字典的值作为列表的列表而不是仅仅一个列表读入字符串(如下所示)?非常感谢!

d = {}
with open("output.txt") as f:
    for line in f:
        d_line = line.rstrip('\n').split(':')
        d[int(d_line[0])] = d_line[1]

print(d)

{0: '[([(11, 191), (11, 170), (14, 170), (11, 188)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]', 90: '[([(95, 170), (95, 2), (119, 2), (95, 146)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]', 180: '[([(182, 2), (182, 23), (179, 23), (182, 5)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]', 270: '[([(98, 23), (98, 191), (74, 191), (98, 47)], [0.7830932724146064, 0.7789413675533634, 0.7714495149543579, 0.7688444764225846])]'}

最佳答案

你很接近,你可以使用 ast.literal_eval 来解释其余部分:

import ast
d = {}
with open("output.txt") as f:
   for line in f:
      d_line = line.rstrip('\n').split(':')
      d[int(d_line[0])] = ast.literal_eval(d_line[1])

print(d)

或者在一行中:

new_d = {int(key):ast.literal_eval(values) for key, values in [i.strip('\n').split(':') for i in open('output.txt')]}

关于Python:从文本文件中读取字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730752/

相关文章:

python - 比较字符串: file and lists

c# - 如何从 C# 中的 plist (xml) 中读取键值

Python字典用户名密码P

python - 如何在大 pandas DataFrame 中将 3 列组连接成一个列?

java - 自定义 map 收集器

Python:Pandas - 对象到数据框中的字符串类型转换

python - 如何将 [] 与自定义 __builtin__ 列表一起使用?

python - 无法在 python 列表中追加字典列表

python - Discord Bot 无法离开语音 channel 'NoneType' 对象没有属性 'disconnect'

python - 如何保留pandas中所有变量的类别?