只是要在文件的字典,没有一点投入的元组后来从tuples
做出dict
:
d = {}
with open("in.txt") as f:
f.next(),f.next() # skip headers
for line in f:
name, time, dept, id = line.split()
d.setdefault(id,[])
d[id].append((name,time,dept))
print d
{'1': [('b1', '2:00pm', 'z1'), ('c1', '4:00pm', 'y2')], '3': [('b3', '3:00pm', 'z3')], '2': [('b2', '3:00pm', 'z2'), ('c4', '4:00pm', 'x2')]}
如果ID总是最后一个元素:
d = {}
with open("in.txt") as f:
f_csv = csv.reader(f, delimiter='\t')
headers = next(f_csv)
tuple_attr = tuple(headers)
data = tuple(tuple(x.split()) for x in f_csv)
for tup in data:
d.setdefault(tup[-1],[])
d[tup[-1]].append(tup[:-1])
tup[-1]
获取密钥的最后一个元素tup[:-1]
获取我们值的最后一个元素。
你可以只遍历f_csv避免使元组干脆:
d = {}
with open("in.txt") as f:
f_csv = csv.reader(f, delimiter='\t')
headers = next(f_csv)
tuple_attr = tuple(headers)
for ele in f_csv:
d.setdefault(ele[-1],[])
d[ele[-1]].append(ele[:-1])
我不知道你想要什么,究竟。是这样的吗? '1':[('b1','2:00 pm','z1'),('c1','4:00 pm','y2')], '2':[( 'b2','3:00 pm','z2'),('c4','4:00 pm','x2')], '3':[('b3','3:00 pm',' z3')] }' – 2014-09-13 09:29:09
是的。与此类似。因为我想输入每个块到我的算法进行并行处理。算法根据每个块中的关键字区分块。 – 2014-09-13 09:36:23
请从问题中删除您的字典示例。它真的让人神经紧张,因为它是完全不好的语法。我的蟒蛇眼睛不能忍受它:) – Mejmo 2014-09-13 09:50:09