【发布时间】:2018-11-28 12:22:52
【问题描述】:
我正在使用 networkX,它是 python 中基于图形的库。我在这里截断了数据,因为它只是一个字典列表。
我想总结图表中三角形的数量。
import networkx as nx
for i in graphT:
print(nx.triangles(i))
这会生成
{0: 1, 1: 0, 2: 0, 3: 1, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1, 11: 0, 12: 2, 13: 0, 14: 2, 15: 1, 16: 1, 17: 0, 18: 0, 19: 1, 20: 0, 21: 0, 22: 0, 23: 0, 24: 0, 25: 5, 26: 1, 27: 0, 28: 0, 29: 1, 30: 0, 31: 0, 32: 0, 33: 4, 34: 1, 35: 3, 36: 1, 37: 1, 38: 2, 39: 1}
{0: 1, 1: 0, 2: 0, 3: 1, 4: 2, 5: 0, 6: 0, 7: 0, 8: 0, 9: 2, 10: 2, 11: 0, 12: 2, 13: 2, 14: 3, 15: 2, 16: 1, 17: 0, 18: 1, 19: 0, 20: 0, 21: 0, 22: 0, 23: 0, 24: 0, 25: 2, 26: 2, 27: 0, 28: 0, 29: 1, 30: 0, 31: 0, 32: 0, 33: 2, 34: 0, 35: 2, 36: 1, 37: 1, 38: 1, 39: 2}
{0: 1, 1: 1, 2: 0, 3: 2, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0, 10: 2, 11: 0, 12: 4, 13: 0, 14: 3, 15: 4, 16: 1, 17: 1, 18: 0, 19: 0, 20: 0, 21: 0, 22: 1, 23: 0, 24: 0, 25: 3, 26: 2, 27: 0, 28: 0, 29: 1, 30: 0, 31: 0, 32: 0, 33: 1, 34: 1, 35: 2, 36: 1, 37: 1, 38: 2, 39: 2}
......
现在,我想对这些值求和
为哪个
for i in graphT:
#print(nx.triangles(i))
for k, v in nx.triangles(i).items():
#print(i.number_of_edges(), v)
#print(jt.append(v))
vi= v
print(k, vi)
break
为键 '0' 生成元组。我在这里用 break 语句截断了数据。
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 1)
(0, 5)
(0, 2)
(0, 4)
(0, 3)
(0, 5)
(0, 2)
(0, 3)
(0, 4)
(0, 1)
(0, 4)
(0, 1)
(0, 8)
(0, 5)
(0, 2)
(0, 4)
(0, 3)
(0, 5)
(0, 6)
(0, 3)
(0, 3)
(0, 11)
(0, 7)
(0, 18)
(0, 9)
(0, 8)
(0, 4)
(0, 12)
(0, 22)
(0, 14)
(0, 23)
(0, 18)
(0, 2)
(0, 41)
(0, 8)
(0, 29)
(0, 13)
(0, 12)
(0, 53)
(0, 12)
我将如何总结这个作为第二个元素的元组的值?如果我使用sum(v) 或sum(vi),我会得到TypeError: 'int' object is not iterable。
这给了我解决方案:
j= [(sum(n for _, n in nx.triangles(i).items()), i.number_of_edges()) for i in graphT]
【问题讨论】:
-
您能否澄清一点:您是专门为求和生成元组,还是出于其他目的需要这些元组?
-
稍后我将不得不使用总和来寻找概率。
-
我知道您需要总和,但我想问的是您是否真的需要打印所有
(k, v)元组,或者您是否只关心v上的总和 -
nx.triangles(i).items() 是一本字典。我需要总结这本字典中的值。那就是我卡住的地方。在每个图“i”上说出 v 的总和
-
我也需要钥匙
标签: numpy dictionary tuples networkx