2011-09-13 141 views
-1

我在的Python:填充或字典

00 154 
01 72 
02 93 
03 202 
04 662 
05 1297 
00 256 

我想经过的每一行,并在1列项的值和列值的形式添加数据值与当前值2值

也如果当前键已经存在,数学2列的新值添加到试过列2

的当前值这样的:

search_result = searches.stdout.readlines() 
     for output in search_result: 
     a,b = output.split() 
     a = a.strip() 
     b = b.strip() 

     if d[a]: 
     d[a] = d[a] + b 
     else: 
     d[a] = b 

,并得到这样的:

Traceback (most recent call last): 
    File "./get_idmanager_stats.py", line 25, in <module> 
    if d[a]: 
KeyError: '00' 

回答

5

这是collections.defaultdict是。

你可以简单地做

d = defaultdict(int) 

而且

d[a]= d[a] + int(b) 

,你会发现,它的作品没有任何if声明。

+0

这是很酷,但它并没有给我的总价值说键00,而不是它给我多行与主要的00 –

+0

@Simply赛斯:什么?它计算一笔款项。不是一个列表。你在说什么? –

+0

我需要取消缩进打印循环一个级别......谢谢。 –

2
d = collections.defaultdict(int) 
for output in search_results: 
    a,b = output.split() 
    d[int(a)] += int(b)