我需要帮助我的代码来计算用于为图表着色的颜色数量 我写了一个小代码来打印颜色列表,现在我需要计算它们
import networkx as nx
g = nx.Graph()
g.add_nodes_from([1,2,3,4,5])
g.add_edges_from([(1,2),(1,3),(1,4),(1,5),(4,5)])
C = set(xrange(12))
color = {}
for u in g:
interdits = set([color[v] for v in g.neighbors(u) if color.has_key(v)])
color[u] = min(C-interdits)
print color
输出:
{1: 0, 2: 1, 3: 1, 4: 1, 5: 2}
而不是这个输出我想计算颜色,所以结果应该是3 任何想法或帮助? 提前致谢
答案 0 :(得分:2)
你绝对应该阅读Python tutorial。您可能还想使用ipython或IDLE,或者您可以轻松查看对象内部的方法,而无需查阅文档,这是一种简单的实验方法。 dir(some_object_name)
也可以,但我觉得它不像在ipython中点击标签那样方便,而是YMMV。
无论如何,一旦你有color
变量:
>>> color
{1: 0, 2: 1, 3: 1, 4: 1, 5: 2}
>>> color.values()
[0, 1, 1, 1, 2]
>>> set(color.values())
set([0, 1, 2])
>>> len(set(color.values()))
3
(并且只是为了确保您使用的颜色数量,而不是所需的最小颜色数量。)
答案 1 :(得分:1)
使用的最高颜色数字可以在
中找到max(color.values())
但它们从零开始编号,所以你可能想要
max(color.values()) + 1
虽然这可能并不重要,但与set
方法不同,这不需要构建所有使用的颜色列表,也不需要对每个条目进行散列。
此外,不推荐使用has_key
。请改用v in color
。