2011-09-13 181 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)