只是要在文件的字典,沒有一點投入的元組後來從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