有时候文件中有某一列的数据存在相同的行,在读取文件的时候,把这些相同的行的的唯一标示作为字典的键,其他的行添加为字典的值,如下所示:
a 11 23
a 12 22
b 12 33
b 23 87
c 23 88
我们期待得到的数据是:
results = {'a' : [[11,12],[23,22]],
'b' : [[12,23],[33,87]],
'c' : [[23],[88]],
}
这个时候,python代码如下:
results = {}
with open("data.txt") as f:
for line in f:
sample_id = line.strip().split("\t")[0]
value1 = line.strip().split("\t")[1]
value2 = line.strip().split("\t")[2]
try:
results[sample_id][0].append(value1)
results[sample_id][1].append(value2)
except KeyError:
results[sample_id] = [[value1], [value2]]
print results
上面的代码对有的文件操作可以,但对从excel 中转化成txt, 和csv, 的文件有问题,我尝试了好半天才解决,主要的问题是回车键和换行造成的。可以用如下代码:
import csv
results = {}
with open("data.csv", 'rU') as f: # 这个地方需注意,要么是‘rU’, 要么是:newline='', 否则会报错
f_csv = csv.reader(f,delimiter ="\t")
for row in f_csv:
sample_id = row[0]
value1 = row[1]
value2 = row[2]
try:
results[sample_id][0].append(value1)
results[sample_id][1].append(value2)
except KeyError:
results[sample_id] = [[value1], [value2]]
print results