- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想使用 NetworkX Graph
对象作为 Python từ điển
中的键。但是,我不希望默认的比较行为(即通过对象的地址)。相反,我希望同构图是 từ điển
中相同元素的键。
此行为是否已在某处实现?我找不到这方面的任何信息。
如果我必须自己实现,以下评估是否现实?
networkx.Graph
包装在一个类中。__eq__
使其调用 is_isomorphic
。__hash__
(欢迎提出建议)。我想我必须让这个包装图不可变,because :
If a class defines mutable objects and implements an
__eq__()
method, it should not implement__hash__()
, since the implementation of hashable collections requires that a key’s hash value is immutable (if the object’s hash value changes, it will be in the wrong hash bucket).
câu trả lời hay nhất
这是一个子类化 networkx Graph 并按照您的描述添加 cân bằng Và băm 函数的示例。我不确定它是否能解决您的问题,但应该是一个开始。
import networkx as nx
class myGraph(nx.Graph):
def __eq__(self, other):
return nx.is_isomorphic(self, other)
def __hash__(self):
return hash(tuple(sorted(self.degree().values())))
nếu __name__ == '__main__':
G1 = myGraph([(1,2)])
G2 = myGraph([(2,3)])
G3 = myGraph([(1,2),(2,3)])
print G1.__hash__(), G1.edges()
print G2.__hash__(), G2.edges()
print G3.__hash__(), G3.edges()
print G1 == G2
print G1 == G3
graphs = {}
graphs[G1] = 'G1'
graphs[G2] = 'G2'
graphs[G3] = 'G3'
print graphs.items()
输出类似:
3713081631935493181 [(1, 2)]
3713081631935493181 [(2, 3)]
2528504235175490287 [(1, 2), (2, 3)]
ĐÚNG VẬY
SAI
[(<__main__.myGraph object at 0xe47a90>, 'G2'), (<__main__.myGraph object at 0x1643250>, 'G3')]
[aric@hamerkop tmp]$ python gc.py
3713081631935493181 [(1, 2)]
3713081631935493181 [(2, 3)]
2528504235175490287 [(1, 2), (2, 3)]
ĐÚNG VẬY
SAI
[(<__main__.myGraph object at 0x1fefad0>, 'G2'), (<__main__.myGraph object at 0x27ea290>, 'G3')]
关于python - NetworkX Graph 对象的“同构”比较,而不是默认的 'address' 比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530455/
Một trong những giáo sư của tôi đã đưa cho chúng tôi một số câu hỏi thực hành và một trong những câu hỏi có dạng như sau (mã giả): a.setColor(blue); b.setColor(red);
Tôi dường như sử dụng bài kiểm tra này rất nhiều if( object && object !== "null" && object !== "unknown" ){ doSomething() } Trên một đối tượng, tôi
Đối tượng/đối tượng C# là loại giá trị hay loại tham chiếu? Tôi đã kiểm tra xem họ có thể giữ tham chiếu này không, nhưng tham chiếu này không thể được sử dụng để thay đổi đối tượng. sử dụng Hệ thống; lớp MyClass { public s
Tôi gặp sự cố khi gửi json qua AJAX. var data = [{"name": "Will", "họ": "Smith", "age": "40"},{"name": "Wil
Khi tôi cố gắng truy cập đối tượng {{result}} trong Chế độ xem của mình (mà tôi đang gửi từ máy chủ Express js), nó chỉ hiển thị [object][object] Có ai biết cách lấy giá trị ở định dạng JSON không? Đây là
Tôi có nhiều loại dữ liệu khác nhau (có thể là chuỗi, số nguyên ...). Đây là một ví dụ đơn giản: public static void main(String[] args) { before("one" }
Xin chào, tôi mới làm quen với json và javascript. Tôi đã tìm ra cách sử dụng dữ liệu json làm bảng trên trang web này. Tôi tò mò tại sao khi tôi cố gắng sử dụng dữ liệu json làm bảng, tôi lại nhận được [Object,Object]
Đã đóng cửa. Sự cố này yêu cầu chi tiết gỡ lỗi. Câu trả lời không được chấp nhận vào thời điểm này. Chỉnh sửa câu hỏi để bao gồm hành vi mong muốn, một vấn đề hoặc lỗi cụ thể và
Tôi nghe người khác nói rằng null == object tốt hơn object == null check. Ví dụ: void m1(Object obj) { if(null == obj) // Is thi.
Đối tượng Match cung cấp quyền truy cập vào các thuộc tính chỉ đọc của các kết quả khớp biểu thức chính quy. Lưu ý rằng các đối tượng Match chỉ có thể được tạo thông qua phương thức Thực thi của đối tượng RegExp, phương thức này thực sự trả về một tập hợp các đối tượng Match. tất cả
Đối tượng lớp Một đối tượng được tạo bằng câu lệnh Lớp. Cung cấp quyền truy cập vào các sự kiện khác nhau của lớp. Giải thích Không được phép khai báo rõ ràng một biến là loại Lớp. Trong ngữ cảnh của VBScript, thuật ngữ "đối tượng lớp" dùng để chỉ
Đối tượng Thư mục cung cấp quyền truy cập vào tất cả các thuộc tính của một thư mục. Giải thích rằng đoạn mã sau minh họa cách lấy một đối tượng Thư mục và xem các thuộc tính của nó: Hàm ShowDateCreated(f
Đối tượng File cung cấp quyền truy cập vào tất cả các thuộc tính của tệp. Đoạn mã sau minh họa cách lấy một đối tượng File và xem các thuộc tính của nó: Hàm ShowDateCreated(fil
Đối tượng Drive cung cấp quyền truy cập vào các thuộc tính của ổ đĩa hoặc mạng chia sẻ. Mô tả Đoạn mã sau minh họa cách sử dụng đối tượng Drive để truy cập các thuộc tính của ổ đĩa: Hàm ShowFreeSpac
Các đối tượng FileSystemObject cung cấp quyền truy cập vào hệ thống tệp của máy tính. Đoạn mã sau minh họa cách sử dụng đối tượng FileSystemObject để trả về một đối tượng TextStream có thể đọc được
Tôi mới làm quen với javascript OOP và tôi nghĩ đây là một câu hỏi tương đối cơ bản nhưng tôi không thể tìm thấy bất kỳ trợ giúp nào bằng cách tìm kiếm trên web. Tôi có thiếu thứ gì đó không, hay tôi đang đi sai hướng? Đây là mã mẫu của tôi: funcio
Tôi có thể tạo ra rất nhiều đồ vật khác nhau một cách dễ dàng. Ví dụ như thế này: var myObject = { myFunction: function () { return "" } };
hàm Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = hàm()
Có ai có thể giải thích cho tôi tại sao đoạn mã sau lại đưa ra (đối tượng, đối tượng) không? (console.log(dope) cung cấp những gì cần thiết, nhưng trong JSON.stringify và JSON.parse
Tôi đang cố gắng hoàn thành bài tập về biểu đồ phân tán từ Free Code Camp. Tuy nhiên, tôi mới chỉ tự học d3 được vài giờ và tôi đang cố gắng tìm ra cách hiển thị dữ liệu cụ thể trong chú giải công cụ sau khi làm theo hướng dẫn từ lynda.com. Mã này
Tôi là một lập trình viên xuất sắc, rất giỏi!