如果我有一個如下的文件,最好的方法是打印包含第一個字段的每一行的最佳方法是共同的(即打印每行的字段[0] ='a',每行的字段[0 ] ='b')?我應該使用sort(),還是將字典的值填充爲列表,或者利用類對每個字段進行分類,或者使用search()?也許我正在過分簡單的解決方案。使用sort()或search()?
文件:
a 2012 fff
b 2012 xxx
a 2011 fff
a 2011 vvv
b 2010 sss
定期排序:
with open('test.txt','r') as file:
for line in file:
field0,field1,field2=line.split()
field0.sort() # ???
OR
class MyClass:
def __init__(self,field0,field1,field2):
self.field0=field0
self.field1=field1
self.field2=field2
def grabField():
for i in MyClass.field0:
print MyClass.field0,MyClass.field1,MyClass.field2
with open('test.txt','r') as file:
for line in file:
field0,field1,field2=line.split()
MyClass(field0,field1,field2)
grabField()
我已經確定了以下代碼來填充字典和排序的值:
from collections import defaultdict
res = defaultdict(list)
with open('test.txt','r') as file:
for line in file:
field0, field1, field2 = line.split()
res[field0] += [field1, field2]
for i in res.keys():
print i, sorted(res[i], key=lambda x: x[0])
然而,這產生 「一個[2011,2011,2012,FFF,FFF,VVV]」 和我想輸出是在完全一樣的格式作爲輸入(但排序):
a 2011 fff
a 2011 vvv
a 2012 fff
我不能只使用原始輸入排序,因爲我將多次引用並需要存儲在內存中。每行的值應存儲在列表中(即字典值是列表的列表)?
我需要多次查詢數據幷包含所有字段,所以我的直覺就是利用一個帶有列表值的類或字典,或者甚至是一個具有值作爲類的字典。只是在如何在不使用sort()的情況下獲取輸出中的數據而苦苦掙扎。 – NewToPy 2012-02-15 04:03:36
@Christopher J. Stuart,當你說「按輸出排序」時,你是什麼意思?我假設你知道如何創建一個字典,其值是以'a'開頭的行列表(或其他)。你是否需要通過其他參數對這些列表進行排序?在那種情況下,你必須對它們進行排序! – senderle 2012-02-15 04:07:20
我的歉意,我明白,我應該使用第一個字段作爲關鍵,但我也需要輸出按字段排序[1](忘記提及this.sorry!),以便我可以說每個鍵給我所有包含該密鑰的行並根據字段進行排序[1] – NewToPy 2012-02-15 04:14:47