从一串数据创建字典

时间:2014-08-21 10:39:20

标签: python dictionary

我想根据从文本文件中提取的数据字符串创建字典。它已经是字典的格式,但它是一个字符串。如何将此数据传输到字典?

程序:

f = open('output.txt')
a = f.readlines()
b = [l.strip('\n') for l in a]
print b 

数据:

['12v: 12.1968', '3.3v: 3.312', '5v: 5.04', 'CPU Temp: 33', 'Disk1 Mounted: 1', 'Disk1 Used Space: 32', 'Disk2 Mounted: 1', 'Disk2 Used Space: 0', 'Fan speed: 3245', 'Motherboard Temp: 30', 'VCore: 1.352']

我需要在程序中添加什么内容?

4 个答案:

答案 0 :(得分:0)

您可以使用简单的代码(尽管不紧凑)

my_dict = {}
for element in b:
    k,v = element.split(":")
    my_dict[k] = v
my_dict

{'12v': ' 12.1968',
 '3.3v': ' 3.312',
 '5v': ' 5.04',
 'CPU Temp': ' 33',
 'Disk1 Mounted': ' 1',
 'Disk1 Used Space': ' 32',
 'Disk2 Mounted': ' 1',
 'Disk2 Used Space ': ' 0',
 'Fan speed': ' 3245',
 'Motherboard Temp': ' 30',
 'VCore': ' 1.352'}

答案 1 :(得分:0)

您的文件内容不是python词典格式。 Disk 2 Used Space 0中也没有冒号。如果你把冒号放在那里,那么可以创建python字典

d = {}
for pair in eval(b):
    key, value = pair.split(':')
    d[key] = value.strip()
print d

d = dict([(x.split(':')) for x in eval(b)])

答案 2 :(得分:0)

简单易懂:

f = open('output.txt')
a = f.readlines()
b = [l.strip('\n') for l in a]

my_dict = dict( [(line.split(":")) for line in b])

假设每个条目都包含一个':' (结肠)

答案 3 :(得分:0)

如果我理解你要做的事情,以下内容应该有效:

f = open("myfile")
dict = {}
fsplit = ""
flines = f.split("\n")

for i in range(len(flines)):
    fsplit = flines[i].split(":")
    dict[fsplit[0] = fsplit[1]

发生的事情是它将每一行拆分成flines,然后循环遍历所有行并创建一个临时变量,该变量保存一个列表,其中包含用冒号分隔的字符串。之后,它只是将2个单词添加到字典中。

您的文件应该如下所示,它应该有效:

myword : hello
mynextword : bye
mythirdword : this should work