【发布时间】:2015-02-25 00:33:02
【问题描述】:
(这个问题已经在 stackoverflow 上的几篇文章中得到解答。但是,我无法得到正确的结果,我不知道我做错了什么?)
我想从一个包含两个键和 14 个值的文本文件中创建一个字典:
data.txt:
Key1 Key2 Val1 Val2 Val3…Val14
100 a x0 y0 z0………n0
101 a x1 y1 z1………n1
102 b x2 y2 z2………n2
103 b x3 y3 z3………n3
104 c x4 y4 z4………n4
105 c x5 y5 z5………n5
…
140 m xm ym zm………nm
字典应该是这样的:
{100: {a: [x0, y0, z0,…n0]},
101: {a: [x1, y1, z1,…n1]},
102: {b: [x2, y2, z2,…n2]},
103: {b: [x3, y3, z3,…n3]},
…
140: {m: [xm, ym, zm,…nm]}}
我已经尝试过 Code1 和 Code2。 Code1 提供了一个非常大的字典,其中的行与附加的其他行重复。 Code2 给出错误 TypeError: unhashable type: 'slice'。
Code1:
lookupfile = open("data.txt", 'r')
lines = lookupfile.readlines()
lookup = lines[1:] # Start the dictionary from row 1, exclude the column names
d={}
for line in lookup:
dic = line.split()
d.update({dic[0]: {dic[1]: dic[2:]}})
print(d)
Code2:
data = defaultdict(dict)
with open('data.txt', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
data[row['Key1']][row['Key2']]=row['Val1':]
print (data)
我希望代码看起来像 Code2,这样我以后可以使用列名。 但是,我将不胜感激。
如果需要,我可以提供更多信息。
【问题讨论】:
标签: python dictionary