如何从Python中的链表中的节点中提取数据?
How do I extract data from a node in a linked list in Python?
如何访问链表中的数据?主要是,我有两个具体问题。我是 python 的初学者,刚开始学习链表,所以如果这看起来是个愚蠢的问题,请多多包涵。
我有一个节点链表,其中每个节点都是 class.
的一个实例
如何获取链表中某个实例属性=x的节点?[=11=]
我有一个节点链表,其中每个节点都是一个字典。
PythonPython中的某个键如何在链表中搜索节点?
目前,我无法访问节点中的信息,只能使用 str 方法打印。
通常你只需要定义一个递归函数。假设你的链表定义如下:
class Node:
def __init__(self, val):
self.val = val
self.next = None
现在遍历列表并找到具有特定值的节点相当容易:
def find(node: Node, search_val):
if not node:
return None
else:
if node.val == search_val:
return node
else:
return find(node.next, search_val)
同样可以修改这个函数来判断node.val
是否是一个字典,是否有某个key。
问题 2 的措辞很奇怪。节点不能是字典。它必须是某种形式的节点 class。它可以包含字典,但不能是字典。
链表中的数据是通过遍历链表来访问的。你需要从头部开始,检查它包含的数据是否是你要找的,如果不是,则遍历到下一个节点。
因此,对链表的实现做一些假设:
- 您需要从头节点开始并遍历您的列表,直到找到所需的数据属性值。
如果所需的数据属性值不在链接列表中,您可以使用 returns None 的函数来执行此操作。我假设你的链表节点有一个方法,next_node,如果它是尾实例,returns None。
def traverse_to_desired_node(head : LinkedListNode, desired : Any):
node = head
while node.data != desired:
node = node.next_node()
if node is None:
return None
return node
- 如果链表中的每个节点都是一个字典,这意味着你的链表实际上是一个嵌套字典,每个嵌套字典都包含在一个键中,'next' 或其他东西,尾部有 None 作为 'next'.
的值
类似的方法会奏效:
def traverse_to_desired_node(head : dict, desired : str):
node = head
while desired not in node:
node = node['next']
if node is None:
return None
return node
现在,无论使用哪种方法,您都可以为节点设置一个变量:
node = traverse_to_node(head, 'desired')
然后,如果它是一个 class 实例,您可以访问该节点的数据属性:
print(node.data)
或者,如果是字典,访问所需的键:
print(node['desired'])
如何访问链表中的数据?主要是,我有两个具体问题。我是 python 的初学者,刚开始学习链表,所以如果这看起来是个愚蠢的问题,请多多包涵。
我有一个节点链表,其中每个节点都是 class.
的一个实例 如何获取链表中某个实例属性=x的节点?[=11=]我有一个节点链表,其中每个节点都是一个字典。 PythonPython中的某个键如何在链表中搜索节点?
目前,我无法访问节点中的信息,只能使用 str 方法打印。
通常你只需要定义一个递归函数。假设你的链表定义如下:
class Node:
def __init__(self, val):
self.val = val
self.next = None
现在遍历列表并找到具有特定值的节点相当容易:
def find(node: Node, search_val):
if not node:
return None
else:
if node.val == search_val:
return node
else:
return find(node.next, search_val)
同样可以修改这个函数来判断node.val
是否是一个字典,是否有某个key。
问题 2 的措辞很奇怪。节点不能是字典。它必须是某种形式的节点 class。它可以包含字典,但不能是字典。
链表中的数据是通过遍历链表来访问的。你需要从头部开始,检查它包含的数据是否是你要找的,如果不是,则遍历到下一个节点。
因此,对链表的实现做一些假设:
- 您需要从头节点开始并遍历您的列表,直到找到所需的数据属性值。
如果所需的数据属性值不在链接列表中,您可以使用 returns None 的函数来执行此操作。我假设你的链表节点有一个方法,next_node,如果它是尾实例,returns None。
def traverse_to_desired_node(head : LinkedListNode, desired : Any):
node = head
while node.data != desired:
node = node.next_node()
if node is None:
return None
return node
- 如果链表中的每个节点都是一个字典,这意味着你的链表实际上是一个嵌套字典,每个嵌套字典都包含在一个键中,'next' 或其他东西,尾部有 None 作为 'next'. 的值
类似的方法会奏效:
def traverse_to_desired_node(head : dict, desired : str):
node = head
while desired not in node:
node = node['next']
if node is None:
return None
return node
现在,无论使用哪种方法,您都可以为节点设置一个变量:
node = traverse_to_node(head, 'desired')
然后,如果它是一个 class 实例,您可以访问该节点的数据属性:
print(node.data)
或者,如果是字典,访问所需的键:
print(node['desired'])