2014-03-03 45 views
3

下面的代碼:求和鍵在字典中

for j in reversed(range(0,15)): 
    print i 
    successors = g.successors(totuple(total_nodes[j,:])) 
    array = [0,0,0,0] 
    a=0 
    i = i+1 

    for succ in successors: 
    print g.node[succ] 
    array[a]=g.node[succ] 
    a+=1  

    print array 
    print sum(item['key'] for item in array) 

產生以下輸出:

1 
{'key': 0.0} 
{'key': 0.39730768970355257} 
{} 
{'key': 0.0} 

[{'key': 0.0}, {'key': 0.39730768970355257}, {}, {'key': 0.0}] 
  1. 我不明白爲什麼有些節點沒有鍵{}。但是,我想忽略這些。
  2. 我要總結這些值或 '鑰匙'

因此,基於我嘗試過其他問題:

  1. print sum(item['key'] for item in array)生產:

    KeyError: 'key'

  2. print sum([i for i in array.values()])生產:

    AttributeError: 'list' object has no attribute 'values'

回答

3

嘗試將最後一行到這一點是爲了避免關鍵錯誤:

sum(item['key'] for item in array if 'key' in item) 
0

你的一些節點的列表或整數 - 這就是爲什麼,不是類型的字典,他們沒有一個values()方法,並且不能用字符串鍵索引。

至於爲什麼你的數據的結構是這樣,我們不能告訴你,除非你給我們更多的情況下(比如,什麼是g?是什麼successors()辦?totuple()?什麼是你正在試圖解決的實際問題? )。

2

可以使用sum(item.get('key', 0)) for item in array)這將返回0如果key沒有找到