擅长:python、mysql、java
<p>正如您已经注意到的,igraph中的各个顶点都是使用graph对象的<code>vs</code>属性访问的。<code>vs</code>的行为类似于一个列表,因此对其进行迭代将产生图的顶点。每个顶点由<code>Vertex</code>类的一个实例表示,顶点的<em>索引</em>由其<code>index</code>属性给出。(请注意,igraph对顶点和边都使用连续的数字索引,因此您需要<code>index</code>属性,而不能直接使用原始顶点名称)。</p>
<p>我假设您需要的是最初存储在输入文件中的顶点的<em>名称</em>。名称存储在<code>name</code>或<code>id</code>顶点属性中(取决于输入格式),因此您可能需要:</p>
<pre><code>for v in graph.vs:
outcsv.writerow([v["name"], estimate[v.index]])
</code></pre>
<p>注意顶点属性是通过索引顶点对象来访问的,就像它是一个字典一样。另一种方法是直接使用<code>vs</code>对象作为字典;这将为您提供一个包含所有顶点的给定顶点属性值的列表。E、 g.:</p>
<pre><code>from itertools import izip
for name, est in izip(graph.vs["name"], estimate):
outcsv.writerow([name, est])
</code></pre>
<p>使用生成器表达式的更快版本:</p>
<pre><code>outcsv.writerows(izip(graph.vs["name"], estimate))
</code></pre>