如何从Python中的链表中的节点中提取数据?

How do I extract data from a node in a linked list in Python?

如何访问链表中的数据?主要是,我有两个具体问题。我是 python 的初学者,刚开始学习链表,所以如果这看起来是个愚蠢的问题,请多多包涵。

  1. 我有一个节点链表,其中每个节点都是 class.
    的一个实例 如何获取链表中某个实例属性=x的节点?[​​=11=]

  2. 我有一个节点链表,其中每个节点都是一个字典。 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。它可以包含字典,但不能是字典。

链表中的数据是通过遍历链表来访问的。你需要从头部开始,检查它包含的数据是否是你要找的,如果不是,则遍历到下一个节点。

因此,对链表的实现做一些假设:

  1. 您需要从头节点开始并遍历您的列表,直到找到所需的数据属性值。

如果所需的数据属性值不在链接列表中,您可以使用 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
  1. 如果链表中的每个节点都是一个字典,这意味着你的链表实际上是一个嵌套字典,每个嵌套字典都包含在一个键中,'next' 或其他东西,尾部有 None 作为 'next'.
  2. 的值

类似的方法会奏效:

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'])