НачатьНачать бесплатно

Запросы к графу

Теперь, когда вы знакомы с основными свойствами графа и попрактиковались в использовании инструментов визуализации 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 ____ < ____]
Редактировать и запускать код