开始使用免费开始使用

在图上进行查询

既然您已经了解了图的一些基本属性,并练习使用 NetworkX 的绘图功能来可视化其组成部分,现在是时候学习如何在图中查询节点和边了。具体来说,您将查找"感兴趣的节点"和"感兴趣的边"。为此,您将使用视频中 Eric 讲解过的 .nodes().edges() 方法。.nodes() 方法返回一个节点视图可迭代对象,而 .edges() 方法返回一个边视图可迭代对象,每个元组显示该边所连接的节点。请记住,在这些方法中传入关键字参数 data=True,还能同时取回与节点和边相关的元数据。

您将编写列表推导式,用一行代码高效完成这些查询。若需回顾列表推导式,请参阅 DataCamp 的 Python Data Science Toolbox 课程的第 2 部分。列表推导式的写法如下:

[ 输出表达式 for 迭代变量 in 可迭代对象 if 谓词表达式 ]

您需要填写的是 可迭代对象谓词表达式。在提交答案之前,您可以先在 IPython Shell 中探索该图,作为原型验证您的思路。

本练习是课程的一部分

Python 网络分析入门

查看课程

练习说明

  • 使用列表推导式,从图 T 中获取具有 'occupation' 标签且值为 'scientist'节点列表
    • 已为您指定 输出表达式 n,以及 迭代变量 nd。您的任务是填写 可迭代对象条件表达式
    • 使用 T.nodes() 方法访问其节点,并确保指定 data=True 以获取节点的元数据。
    • 迭代变量 d 是一个字典。此处关注的键为 'occupation',对应的值应为 'scientist'
  • 使用列表推导式,从图 T 中获取形成时间至少为 6 年、也就是早于 2010 年 1 月 1 日边列表
    • 同样需要您填写 可迭代对象条件表达式
    • 使用 T.edges() 方法访问其边,并确保同时获取边的元数据。
    • 日期以 datetime.date 对象的形式存储在元数据字典 d 中,键为 'date'。例如,要表示 2009 年 1 月 1 日,可使用字典值 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 ____ < ____]
编辑并运行代码