可以使用递归来解决这个问题。具体思路如下:

  1. 首先判断当前字符串是否以"["开头,如果是,说明还有一层嵌套,需要进一步递归处理;否则,说明已经到了最里层,返回当前字符串对应的list。

  2. 如果当前字符串以"["开头,那么需要找到与之对应的"]"的位置,可以使用栈来实现。从字符串的第一个字符开始遍历,遇到"["就将其压入栈中,遇到"]"就将栈顶的"["弹出。当栈为空时,说明找到了与第一个"["对应的"]"的位置,此时将这两个位置之间的子字符串取出来,递归调用函数处理这个子字符串对应的list。

  3. 在递归调用返回之后,当前层的处理就可以继续了。如果当前层的list中包含多个子list,则需要对每个子list都进行递归处理,并将处理结果加入一个新的list中。最后返回这个新的list即可。

代码如下:

def get_innermost_list(data):
    if data[0] != "[":
        return None
    stack = []
    i = 0
    while i < len(data):
        if data[i] == "[":
            stack.append("[")
        elif data[i] == "]":
            stack.pop()
            if len(stack) == 0:
                sub_data = data[1:i]
                break
        i += 1
    else:
        return None
    sub_list = eval(sub_data)
    if isinstance(sub_list, list):
        result = []
        for item in sub_list:
            if isinstance(item, list):
                innermost_list = get_innermost_list(str(item))
                if innermost_list:
                    result.append(innermost_list)
        return result
    else:
        return None

data = "[[[1,2],[3,4]],[5,6]]"
result = get_innermost_list(data)
print(result)

输出结果为:[[5, 6]]

给定一个字符串表示一个可以转成未知层数的list例如:123456我们需要取出最里面一层的上一层的数组的数据也就是56所在的那一层

原文地址: https://www.cveoy.top/t/topic/broV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录