Python表分类
我有不同类型的数据,例如:Python表分类,python,arrays,Python,Arrays,我有不同类型的数据,例如: 4.5,3.5,U1 4.5,10.5,U2 4.5,6,U1 3.5,10.5,U2 3.5,10.5,U2 5,7,U1 7,6.5,U1 我需要输出: 'U1': [['4.5', '3.5'], ['4.5', '6'], ['5', '7'], ['7', '6.5']] 'U2': [['4.5', '10.5'], ['3.5', '10.5'], ['3.5', '10.5']] 所以我的代码是: import csv reader = csv.
4.5,3.5,U1
4.5,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1
我需要输出:
'U1': [['4.5', '3.5'], ['4.5', '6'], ['5', '7'], ['7', '6.5']]
'U2': [['4.5', '10.5'], ['3.5', '10.5'], ['3.5', '10.5']]
所以我的代码是:
import csv
reader = csv.reader(open('test.data', 'r'))
result = {}
for row in reader:
uclass=row[-1]
if result.has_key(uclass):
result[uclass].append([row[0],row[1]]) #--->how can I change from 0 to -2 row ??
else:
result[uclass]=[[row[0],row[1]]] #--->-->how can I change from 0 to -2 row ??
print repr(result)
但是对于任何其他输入数据,我都需要这段代码,因为其中有很多行,而不仅仅是3行
请参见代码中的注释
result[uclass].append(row[:-1])
及
这个符号叫做。这可能是什么
data = """\
4.5,3.5,U1
4.5,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1""".splitlines()
from collections import defaultdict
dd = defaultdict(list)
for d in data:
dl = d.split(',')
dd[dl[-1]].append(list(map(float, dl[:-1])))
for key in dd:
print key, dd[key]
印刷品:
U1 [[4.5, 3.5], [4.5, 6.0], [5.0, 7.0], [7.0, 6.5]]
U2 [[4.5, 10.5], [3.5, 10.5], [3.5, 10.5]]
这是你的代码,我做了一些修改
import csv
reader = csv.reader(open('test.data', 'r'))
result = {}
for row in reader:
#print row
if(len(row) == 0):
continue;
uclass = row[-1]
if result.has_key(uclass):
result[uclass].append([row[:-1]]) #--->how can I change from 0 to -2 row ??
else:
result[uclass]=[[row[:-1]]] #--->-->how can I change from 0 to -2 row ??
print repr(result)
我对以下数据进行了测试,它是有效的
5.66,4.5,3.5,U1
4.5,23123,34,10.5,U2
4.5,6,U1
3.5,10.5,U2
3.5,10.5,U2
5,7,U1
7,6.5,U1
4.5,45,73.3,56,66,72.5,U3
导致
U1: [[4.5, 3.5], [4.5, 6.0], [5.0, 7.0], [7.0, 6.5]]
U2: [[4.5, 10.5], [3.5, 10.5], [3.5, 10.5]]
评论:
import csv
import collections
def main():
with open('testdata.csv', 'rb') as inf:
incsv = csv.reader(inf)
res = collections.defaultdict(list)
for row in incsv:
key = row.pop()
res[key].append([float(r) for r in row])
for key,val in res.iteritems():
print("{0}: {1}".format(key, val))
if __name__=="__main__":
main()
U1: [[4.5, 3.5], [4.5, 6.0], [5.0, 7.0], [7.0, 6.5]]
U2: [[4.5, 10.5], [3.5, 10.5], [3.5, 10.5]]