Python 如何从特定键获取值

Python 如何从特定键获取值,python,python-3.x,Python,Python 3.x,我定义了这样一个类: class NodeData : key = 0 neighbors = {} location = () def __init__(self, k, l): self.key = k self.location = l self.neighbors = {k: {}} def __str__(self) : return "key = %d" %

我定义了这样一个类:

class NodeData :
    key = 0
    neighbors = {}
    location = ()

    def __init__(self, k, l):
        self.key = k
        self.location = l
        self.neighbors = {k: {}}

    def __str__(self) :
        return "key = %d" % self.key + ", pos = " + '{0}'.format(self.location) +\
               ", neighbors = " + '{0}'.format(NodeData.neighbors.get(self.key))
node = NodeData(1, (5, 0, 0))
node.neighbors = {0: 1.2}
现在我需要用权重连接这些节点之间的边。 因此,我在字典中创建了一个字典,如下所示:

class NodeData :
    key = 0
    neighbors = {}
    location = ()

    def __init__(self, k, l):
        self.key = k
        self.location = l
        self.neighbors = {k: {}}

    def __str__(self) :
        return "key = %d" % self.key + ", pos = " + '{0}'.format(self.location) +\
               ", neighbors = " + '{0}'.format(NodeData.neighbors.get(self.key))
node = NodeData(1, (5, 0, 0))
node.neighbors = {0: 1.2}
所以,邻居现在有了这个:

{1: {0: 1.2}}
然后,我创建了另一个节点:

node2 = NodeData(2, (6, 0, 0))
现在,我想将
node2
连接到
node
,但我一直在努力知道
node2.key
是否已经是
node

此函数用于获取节点的邻居:
NodeData.neights.get(node.key)
但我没有找到一种方法将其与node2.key进行比较

node2返回
key=2,pos=(6,0,0),neights=None
因此它与
NodeData.neights.get(node.key)

已尝试
NodeData.neights.get(node.key).get(node2.key)
,但返回:

“非类型”对象没有属性“get”

因为
node2
不是
node


有什么建议吗?

使用
[]
语法访问嵌套值

比如说

dic = { "key" : {"key 2" : 20} }

dic["key"]["key 2"]
哪个会回来

20

使用
[]
语法访问嵌套值

比如说

dic = { "key" : {"key 2" : 20} }

dic["key"]["key 2"]
哪个会回来

20

您能否澄清您试图实现的数据结构类型?它是某种树吗?你是如何从
node.neights={0:1.2}
到“neights现在是
{1:0:1.2}
”?我正在尝试实现一个图。你知道
neights={}
定义了一个类属性和
self.neights={k:{}
一个实例属性吗?它们不一样。@zvone首先,我用
键=1构建了一个新的Nodedata,然后输入值
{0:1.2}
,您能澄清一下您试图实现的数据结构类型吗?它是某种树吗?你是如何从
node.neights={0:1.2}
到“neights现在是
{1:0:1.2}
”?我正在尝试实现一个图。你知道
neights={}
定义了一个类属性和
self.neights={k:{}
一个实例属性吗?它们不一样。@zvone首先,我用
键=1构建了一个新的节点数据,然后输入值
{0:1.2}
,实际上我已经尝试过了。但是,它不起作用,因为-当我用IF这样做时:
如果dic.get(“key”).get(“key 2”)
那么我会得到一个空错误,因为
key 2
不存在它们@John我编辑了我的答案,使用
[]
语法,而不是
.get()
方法。那应该会更好。事实上我试过了。但是,它不起作用,因为-当我用IF这样做时:
如果dic.get(“key”).get(“key 2”)
那么我会得到一个空错误,因为
key 2
不存在它们@John我编辑了我的答案,使用
[]
语法,而不是
.get()
方法。这应该更有效