从一列中删除重复项并添加其对应的值

时间:2013-11-11 11:08:58

标签: python python-2.7

我有三列包含大量数据,第一列有id,第三列有值。 id中有重复但值不重复。我想从id的列中删除重复项,但想要所有值的总和。 例如     id class_code值     a = 1     b * 2     c + 3     a + 4     d = 5     b + 6     a = 7     a + 8     b * 9

想要输出

a   8
a   12
b   11
c   3
d    5

只删除具有相同class_codes和id nd的那些添加值,在此操作打印整个列表后,还删除具有标题的第一行。 我试过但它从表中删除了整个值

file="C:/Python25/ref.txt"
fh=open(file,'r')
myData=fh.read()
myText=myData.split()
line_seen=set()
for line in myText:
    if line in line_seen:
        line_seen.add(line)
            print line[0:]

fh.close()

3 个答案:

答案 0 :(得分:1)

d = {}
with open('your_file', 'r') as f:
    for line in f.readlines():
        line = line.split()
        if line[0] in d:
            d[line[0]] += int(line[2])
        else:
            d[line[0]] = int(line[2])
  1. 逐行阅读文件。
  2. 如果id不存在,请插入字典。
  3. 如果id存在,请更新字典。
  4. BOOM!完成。

答案 1 :(得分:0)

使用字典时非常简单。这样的事情应该有效(未经测试):

D = dict()
for line in myText:
    if line[0] not in D.keys():
        D[line[0]] = line[1])
    else
        D[line[0]] = D[line[0]] + line[1])

答案 2 :(得分:0)

from collections import defaultdict

d = defaultdict(int)
for line in open('ref.txt'):
    key, value = line.split()
    d[key] += int(value)

print sorted(d.items())

[('a',20),('b',17),('c',3),('d',5)]

相关问题