我有一個看起來像CSV數據:總和比賽的CSV發現
17860 1
17861 1
17861 2
17861 1
17861 1
17861 1
17862 1
17863 1
17863 1
17863 1
我的目標是讓輸出到顯示器比賽的總和在左邊的列,得到的結果,例如:
17860 1
17861 6
17862 1
17863 3
什麼我遇到的麻煩是如何去存儲5位數字,它在列比較數據的其餘部分,然後捕獲單個位數得到的總和。
我有一個看起來像CSV數據:總和比賽的CSV發現
17860 1
17861 1
17861 2
17861 1
17861 1
17861 1
17862 1
17863 1
17863 1
17863 1
我的目標是讓輸出到顯示器比賽的總和在左邊的列,得到的結果,例如:
17860 1
17861 6
17862 1
17863 3
什麼我遇到的麻煩是如何去存儲5位數字,它在列比較數據的其餘部分,然後捕獲單個位數得到的總和。
您可以利用哈希(也就是字典中的Python)的數據結構。通讀您的文件並將第一列數字存儲爲鍵,第二列存儲爲值。如果您發現密鑰已存在,則將當前值添加到前一個值,或者添加新密鑰本身。
hash = {}
for line in file:
key, value = map(int, line.split())
if key in hash:
hash[key] += value
else:
hash[key] = value
awk '{ sum[$1] += $2 } END { for (i in sum) print i, sum[i] }' t.txt
17862 1
17863 3
17860 1
17861 6
或許更具有可讀性,把這個文件和chmod +x
它,你可以在程序運行:
#!/usr/bin/awk -f
{
sum[$1] += $2
}
END {
for (i in sum)
print i, sum[i]
}
那不是python – 2014-10-03 04:18:10
這是什麼?一個腳本? – Nabin 2014-10-03 04:24:46
@Nabin:這是AWK語言的腳本。 OP從來沒有提到Python的問題,只在標籤中提到過。 – 2014-10-03 04:27:01
這似乎是一個很好的開始,非常感謝! – user1764417 2014-10-03 04:35:41