Запросы к графу
Теперь, когда вы знакомы с основными свойствами графа и попрактиковались в использовании инструментов визуализации NetworkX, пришло время научиться выполнять запросы к узлам и рёбрам графа. В частности, вы будете искать «узлы, представляющие интерес» и «рёбра, представляющие интерес». Для этого вы воспользуетесь методами .nodes() и .edges(), которые Эрик рассмотрел в видео. Метод .nodes() возвращает итерируемое представление узлов, а метод .edges() — итерируемое представление рёбер, где каждый кортеж показывает узлы, соединённые данным ребром. Напомним, что передача аргумента data=True в эти методы позволяет получить соответствующие метаданные узлов и рёбер.
Вы будете использовать списковые включения, чтобы записать эти запросы в одну строку. Если вам нужно освежить знания о списковых включениях, обратитесь к части 2 курса DataCamp «Python Data Science Toolbox». Вот общая схема спискового включения:
[ выражение результата for переменная итератора in итерируемый объект if предикат ].
Вам нужно заполнить _итерируемый объект_ и _предикат_. Не стесняйтесь тестировать своё решение, исследуя граф в IPython Shell перед отправкой ответа.
Это упражнение является частью курса
Введение в анализ сетей на Python
Инструкции к упражнению
- Используйте списковое включение, чтобы получить список узлов графа
T, у которых метка'occupation'равна'scientist'.- Выражение результата
nуже задано, так же как и переменные итератораnиd. Ваша задача — заполнить итерируемый объект и условное выражение. - Используйте метод
.nodes()объектаTдля доступа к его узлам и укажитеdata=True, чтобы получить метаданные узлов. - Переменная итератора
d— это словарь. Ключ, который вас интересует, —'occupation', а нужное значение —'scientist'.
- Выражение результата
- Используйте списковое включение, чтобы получить список рёбер графа
T, которые существуют не менее 6 лет, то есть были сформированы до 1 января 2010 года.- Ваша задача снова состоит в том, чтобы заполнить итерируемый объект и условное выражение.
- Используйте метод
.edges()объектаTдля доступа к его рёбрам. Не забудьте также получить метаданные рёбер. - Даты хранятся как объекты
datetime.dateв словаре метаданныхdпод ключом'date'. Например, чтобы обратиться к дате 1 января 2009 года, значение словаря будетdate(2009, 1, 1).
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Use a list comprehension to get the nodes of interest: noi
noi = [n for n, d in ____ if d['____'] == '____']
# Use a list comprehension to get the edges of interest: eoi
eoi = [(u, v) for u, v, d in ____ if ____ < ____]