問題呈現計數的重複對與約束
我有以下文件(文件是根據所有三列排序):
D000001 D000001 1975
D000001 D000001 1976
D000001 D002413 1976
D000001 D002413 1979
D000001 D002413 1987
D000001 D004298 1976
D000002 D000002 1985
D000003 D000900 1975
D000003 D000900 1990
D000003 D004134 1983
D000003 D004134 1986
我需要計算重複對(在第一和第二列),並且每個這樣的對分配第三列中的最低值。對於我的玩具文件輸出應該是:
D000001 D000001 2 1975
D000001 D002413 3 1976
D000001 D004298 1 1976
D000002 D000002 1 1985
D000003 D000900 2 1975
D000003 D004134 2 1983
我的問題
- 文件是巨大的(1 GB到5 GB),我不知道什麼是最合適的編程結構,在此實施設置?
- 如何正確打印最後(第三)列?在當前設置(下面的檢查代碼)中,程序打印最後一個(最高)值。
我對當前輸出的初始嘗試如下。
my_dict = {}
with open('test.srt') as infile:
for line in infile:
line = line.rstrip()
word1, word2, year = line.split('|')
year = int(year)
my_tuple = (word1, word2)
if my_tuple in my_dict:
freq += 1
my_dict[my_tuple] = (freq, year)
else:
freq = 1
my_dict[my_tuple] = (freq, year)
for key, value in my_dict.items():
print key[0], key[1], value
電流輸出:
D000001 D000001 (2, 1976) ## Should be 1976 etc.
D000001 D002413 (3, 1987)
D000001 D004298 (1, 1976)
D000002 D000002 (1, 1985)
D000003 D000900 (2, 1990)
D000003 D004134 (2, 1986)
爲什麼文件巨大的*和*排序?似乎時間已經被浪費在準備這樣的事情上,雖然它在現階段大大簡化了處理過程,因爲重複對是連續的。 – Kaz