小编Luk*_*vić的帖子

如何使用用户定义的类对象作为networkx节点?

类点的定义为(其中还包含一些方法,属性和东西,但这是最少的一部分):

class point():
    def ___init___(self, x, y):
        self.x = x
        self.y = y
Run Code Online (Sandbox Code Playgroud)

因此,我看到了这个问题,但是当我尝试应用它时,它返回一个错误:

G = nx.Graph()
p = point(0,0)
G.add_node(0, p)
Run Code Online (Sandbox Code Playgroud)

NetworkXError:attr_dict参数必须是字典。

如果我用

G = nx.Graph()
p = point(0,0)
G.add_node(0, data = p)
Run Code Online (Sandbox Code Playgroud)

我没有收到错误,但是当我尝试访问X坐标时,事实证明并没有将其保存为点。

G[0].x
Run Code Online (Sandbox Code Playgroud)

返回:AttributeError:'dict'对象没有属性'x'

在做

G = nx.Graph()
G.add_node(0, data = point(0,0))
G[0]
Run Code Online (Sandbox Code Playgroud)

返回:{}

这意味着它仍将其另存为字典。

我看到我可以使点成为可散列的,并将这些对象用作节点,所以我添加了属性ID,因为点将移动。我将其添加到类中,并__repr__来绘制漂亮的图形:

def __hash__(self):
    return self.id_n
def __cmp__(self, p):
    if self.id_n < p.id_n: return -1
    elif self.id_n == p.id_n: return 0
    else: return 1
def __eq__(self, p):
    if p.id_n == self.id_n: …
Run Code Online (Sandbox Code Playgroud)

python class user-defined nodes networkx

7
推荐指数
1
解决办法
1520
查看次数

如何在bash中使用指数对两列进行排序

我需要从文件"test"(数据示例)中排序一些数据:

1.03073 0.000193333 2.02417 2.15578
1.03073 0.0002 2.12005 2.14534
1.03073 1.33333e-05 100 0
1.03073 2e-05 100 0
Run Code Online (Sandbox Code Playgroud)

这样它首先在第一列上排序,然后在第二列上排序.我试过了

sort -n -k1 -k2 -u test >test1 
Run Code Online (Sandbox Code Playgroud)

但它很混乱,因为他没有看到"e-5"的一部分.有任何想法吗?

sorting bash double

3
推荐指数
1
解决办法
118
查看次数

标签 统计

bash ×1

class ×1

double ×1

networkx ×1

nodes ×1

python ×1

sorting ×1

user-defined ×1