在字典中的Sum键

时间:2014-03-03 16:36:34

标签: python dictionary networkx

以下代码:

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. 我想将这些值或'键'相加
  3. 基于我尝试过的其他问题:

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

        

      KeyError:'key'

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

        

      AttributeError:'list'对象没有属性'values'

3 个答案:

答案 0 :(得分:3)

尝试将最后一行更改为此以避免关键错误:

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

答案 1 :(得分:2)

如果找不到sum(item.get('key', 0)) for item in array),您可以使用会0的{​​{1}}

答案 2 :(得分:0)

你的一些节点是列表或整数 - 这就是为什么,不是dicts,它们没有values()方法,也不能用字符串键索引。

至于为什么你的数据是这样的,我们不能告诉你除非你给我们更多的背景(比如,g是什么?successors()做什么?totuple()?什么你试图解决的实际问题是什么?)。