在圖上進行查詢
現在你已經了解此圖的一些基本性質,並練習用 NetworkX 的繪圖功能來視覺化它的元件,接下來要看看如何對它進行節點與邊的查詢。具體來說,你要找出「感興趣的節點」與「感興趣的邊」。為此,你會使用 Eric 在影片中介紹過的 .nodes() 與 .edges() 方法。.nodes() 會回傳節點檢視的可疊代物件;.edges() 會回傳邊檢視的可疊代物件,其中每個 tuple 代表該邊相連的節點。別忘了,在這些方法中傳入關鍵字引數 data=True,也能同時取回與節點與邊相關的中繼資料。
你會撰寫串列生成式,一行就有效建立這些查詢。若需要複習串列生成式,請參考 DataCamp 的 Python Data Science Toolbox 課程之[Part 2](https://www.datacamp.com/courses/python-data-science-toolbox-part-2)。以下是串列生成式的範本:
[ 輸出運算式 for 迭代變數 in 可疊代物件 if 謂詞運算式 ]。
你需要填入的是「可疊代物件」與「謂詞運算式」。在送出解答前,歡迎先在 IPython Shell 中探索此圖,做出原型後再提交。
本練習屬於課程
Python 網路分析入門
練習說明
- 使用串列生成式,從圖
T取得一個「節點清單」,其'occupation'標籤為'scientist'。- 輸出運算式
n以及 迭代變數n、d已為你提供。你的任務是填入 可疊代物件 與 條件運算式。 - 使用
T的.nodes()方法來存取節點,並務必指定data=True以取得節點的中繼資料。 - 迭代變數
d是字典。此處關注的鍵為'occupation',對應的值為'scientist'。
- 輸出運算式
- 使用串列生成式,從圖
T取得一個「邊的清單」,其形成時間已至少 6 年,也就是在 2010-01-01 之前。- 你的任務同樣是填入 可疊代物件 與 條件運算式。
- 使用
T的.edges()方法來存取邊,並同樣取得邊的中繼資料。 - 日期以
datetime.date物件儲存在中繼資料字典d的'date'鍵下。例如,要表達 2009-01-01,字典值會是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 ____ < ____]