Python 更改链接列表(节点链)中最后找到的目标值

Python 更改链接列表(节点链)中最后找到的目标值,python,python-3.6,Python,Python 3.6,我试图找出如何将链接列表中最后找到的目标值更改为替换值。例如,如果您有一个链接列表,如 [1,'next'],[2,'next'],[3,next'],[2,none] 如何仅替换最后2个,而不是全部或第一个?这是我目前拥有的代码 walker = node_chain if node_chain is None: return None elif walker['data'] == target_val and walker['next'] is None: walker =

我试图找出如何将链接列表中最后找到的目标值更改为替换值。例如,如果您有一个链接列表,如

[1,'next'],[2,'next'],[3,next'],[2,none]

如何仅替换最后2个,而不是全部或第一个?这是我目前拥有的代码

walker = node_chain
if node_chain is None:
    return None
elif walker['data'] == target_val and walker['next'] is None:
    walker = node.set_data(walker, replacement_val)
    return walker
else:
    while walker['next'] is not None:
        if walker['data'] == target_val:
            node_chain = node.set_data(walker, replacement_val)
            return node_chain
        walker = node.get_next(walker)
        if walker['next'] is None and walker['data'] == target_val:
            walker = node.set_data(walker, replacement_val)
            return walker
因此,在给定的代码中,如果目标值为2,替换值为4,它将返回

[1,'next'],[4,'next'],[3,next'],[2,none]

而不是我想要的回报

[1,'next'],[2,'next'],[3,next'],[4,无]

提前谢谢你

walker = node_chain
target_node = None
if node_chain is None:
    return None
else:
    while walker is not None:
        if walker['data'] == target_val:
            target_node = walker
        walker = node.get_next(walker)
    if target_node != None
        node_chain = node.set_data(target_node, replacement_val)

你应该这样做。我不确定这是否有效,因为我没有你的其他函数,但这应该给你一个大致的想法

初始化第二个变量以存储目标值的最后位置。只要正常地遍历链表,只要找到目标值,就更新第二个变量。遍历完列表后,只需更新存储在第二个变量中的节点