如何在python中获取非均匀嵌套列表的最后一个值

2024-06-16 11:58:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我读了一个动态变化的树,它的值以不均匀嵌套列表的形式出现。你知道吗

[u'All VMs & Templates', [[u'vSphere 5.5 (nested)', [[u'Datacenter', [[u'Discovered virtual machine', [u'vm1', 'vm2', 'vm3']]]]]]]

列表模式会因不同的树而改变,但在所有情况下,我都希望最后一个值,即vm3在这里,那么是否有函数或方法来获取它?你知道吗


Tags: 列表virtual模式machinealltemplates形式nested
2条回答

您可以使用递归函数,如下所示:

In [61]: def get_last(lst):
             last = lst[-1]
             if isinstance(last, list):
                 return get_last(last)
             return last
   ....: 

In [62]: 

In [62]: get_last(lst)
Out[62]: 'vm3'

但作为一种更为python的方法,我建议如果您从其他地方读取这些数据或创建一个特殊类型,那么可以为此向对象添加一个特定的方法。类似于preserve_the_last()。然后,可以使用最大长度为1的deque()对象,该对象在每次迭代时接受输入数据。在这种情况下,你会在最后提出最新的项目。然后你可以得到最后一个项目使用一个切片。你知道吗

可以使用while循环在每个嵌套列表中保持最后一次获取,直到到达非列表实例:

val = lst[-1]
while isinstance(val, list):
    val = val[-1]

相关问题 更多 >