Я пишу класс, который наследуется от DiGraph.py из пакета с открытым исходным кодом networkx в python.
В некоторых методах в моем классе мне нужно искать узлы с определенными степенями (выходами или степенями)для ориентированного графа) и верните их.
Этот класс должен использоваться с проектом интеллектуального анализа данных \ обработки естественного языка, он будет использоваться в очень больших сетях.мне нужна быстрая реализация описанного метода (возврат списка узлов с определенной степенью выхода или определенной степенью).
В суперклассе уже определена пара вещей: 1. метод network.outdegree()
: возвращает словарь с ключами узла и значениями выходных данных.
{'school': 4, 'middle school': 0, 'university': 0, 'commercial': 0, 'private': 5, 'institution': 2, 'high school': 0, 'college': 0, 'elementary school': 0, 'central': 0, 'company': 0, 'public': 3, 'bank': 2}
- метод, который является
network.out_degree_iter ()
<generator object out_degree_iter at 0x02EEB328>
Я не знаю, как использовать этот метод. Если кто-то может объяснить, как это используется, я буду благодарен.
3. У меня есть атрибут network.nodes, который представляет собой список всех узлов вмоя сеть.
Вопрос: я могу выполнить итерацию по всем узлам и, например, вернуть те, у которых есть степень 2, путем составления списка на узлах network.nodes, или я могу выполнить итерацию по своему словарю и вернуть списокузлы со значениями 2, или, может быть, используют out_degree_iter()
, который я не знаю, как он используется или чем он отличается от итерации по элементам словаря в цикле for (для k, v в dict.iteritems ()) ??Какой из них будет быстрее для очень большой сети узлов и ребер и ПОЧЕМУ?
Спасибо