Запити до графа
Тепер, коли ви знаєте базові властивості графа та попрактикувалися у візуалізації його компонентів за допомогою інструментів відмальовування NetworkX, час дослідити, як можна робити запити до графа щодо вузлів і ребер. Зокрема, ви шукатимете «цікаві вузли» та «цікаві ребра». Для цього ви використаєте методи .nodes() і .edges(), які Ерік розглядав у відео. Метод .nodes() повертає ітерований об'єкт Node view, а .edges() — ітерований об'єкт edge view, де кожен кортеж показує вузли, що утворюють відповідне ребро. Нагадаємо, що передавання іменованого аргументу data=True у цих методах також повертає відповідні метадані, пов'язані з вузлами та ребрами.
Ви напишете спискові включення, щоб ефективно будувати такі запити в один рядок. Якщо потрібно освіжити знання про спискові включення, перегляньте Частину 2 курсу DataCamp Python Data Science Toolbox. Ось шаблон спискового включення:
[ вираз результату for змінна-ітератор in ітерований if логічний вираз ].
Вам потрібно заповнити поля _iterable_ та _predicate expression_. За потреби спочатку спробуйте свій варіант, дослідивши граф в оболонці IPython, а вже потім надсилайте розв'язок.
Ця вправа є частиною курсу
Вступ до аналізу мереж у 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 ____ < ____]