Truy vấn trên một đồ thị
Giờ thì bạn đã biết một vài thuộc tính cơ bản của đồ thị và đã luyện tập dùng chức năng vẽ của NetworkX để trực quan hóa các thành phần, đã đến lúc khám phá cách truy vấn nút và cạnh. Cụ thể, bạn sẽ tìm các "nút quan tâm" và "cạnh quan tâm". Để làm điều này, bạn sẽ dùng các phương thức .nodes() và .edges() mà Eric đã giới thiệu trong video. Phương thức .nodes() trả về một Node view có thể lặp, trong khi phương thức .edges() trả về một edge view có thể lặp, trong đó mỗi tuple cho biết các nút nằm trên cạnh đó. Nhớ rằng truyền đối số từ khóa data=True vào các phương thức này cũng sẽ truy xuất metadata tương ứng gắn với các nút và cạnh.
Bạn sẽ viết các list comprehension để xây dựng các truy vấn này gọn trong một dòng. Nếu cần ôn lại về list comprehension, hãy xem Phần 2 của khóa Python Data Science Toolbox trên DataCamp. Công thức của một list comprehension là:
[ biểu thức đầu ra for biến lặp in iterable if biểu thức điều kiện ].
Bạn cần điền vào phần _iterable_ và _biểu thức điều kiện_. Bạn có thể thử nghiệm câu trả lời bằng cách khám phá đồ thị trong IPython Shell trước khi gửi lời giải.
Bài tập này là một phần của khóa học
Nhập môn Phân tích Mạng bằng Python
Hướng dẫn bài tập
- Dùng một list comprehension để lấy danh sách các nút từ đồ thị
Tcó nhãn'occupation'là'scientist'.- Biểu thức đầu ra
nđã được cung cấp, cùng với các biến lặpnvàd. Nhiệm vụ của bạn là điền phần iterable và biểu thức điều kiện. - Dùng phương thức
.nodes()củaTđể truy cập các nút, và nhớ chỉ địnhdata=Trueđể lấy metadata của các nút. - Biến lặp
dlà một từ điển. Khóa cần quan tâm ở đây là'occupation'và giá trị cần quan tâm là'scientist'.
- Biểu thức đầu ra
- Dùng một list comprehension để lấy danh sách các cạnh từ đồ thị
Tđược hình thành ít nhất 6 năm, tức là từ trước 1 Jan 2010.- Một lần nữa, nhiệm vụ của bạn là điền phần iterable và biểu thức điều kiện.
- Dùng phương thức
.edges()củaTđể truy cập các cạnh. Nhớ lấy cả metadata của các cạnh. - Ngày tháng được lưu dưới dạng đối tượng
datetime.datetrong từ điển metadatad, dưới khóa'date'. Ví dụ, để truy cập ngày 1 Jan 2009, giá trị từ điển sẽ làdate(2009, 1, 1).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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 ____ < ____]