Подсчитайте количество цветов, используемых для окрашивания графика в Python - PullRequest
0 голосов
/ 26 марта 2012

Мне нужна помощь с моим кодом для подсчета количества цветов, которые использовались для окрашивания графика Я написал небольшой код для печати списка цветов, и теперь мне нужно их посчитать

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 Любая идея или помощь? Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 26 марта 2012

Вы обязательно должны прочитать Python учебник .Возможно, вы также захотите использовать 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 голос
/ 26 марта 2012

Максимальный использованный цвет можно найти с помощью

max(color.values())

, но они нумеруются с нуля, так что вы, вероятно, хотите

max(color.values()) + 1

Хотя это, вероятно, не имеет большого значения,для этого не требуется составлять список всех используемых цветов или хэшировать каждую запись, в отличие от метода set.

Кроме того, has_key не рекомендуется.Вместо этого используйте v in color.

...