计算未分隔的嵌套列表中的列表数

时间:2014-04-01 20:53:16

标签: python list nested counting

所以我有一个巨大的列表,其中嵌套了许多列表,我想得到这个大外部列表中列表数量的计数。问题是这些列表没有被任何东西分开,如下所示:

[[list1][list2][list3][list4]]

请帮忙!

4 个答案:

答案 0 :(得分:1)

根据评论,您的列表看起来像

nested = ['[a][b][c][d]']

(所以len(nested)=1type(nested_list[0])str

要计算"列表"的数量,您可以执行以下操作:

len(nested[0].split(']['))

答案 1 :(得分:0)

假设您的数据是一个字符串,因为它不可能是一个列表,如果列表没有嵌套得更深并且不包含包含][的字符串,则可以尝试以下操作:

x = '[[list1][list2][list3][list4]]'
print (len (x.split ('][') ) )
>>> 4

答案 2 :(得分:0)

以下是我的假设,基于您的描述:

  • 你所拥有的是一个看起来像几乎的字符串
  • '伪列表' 中的每个项目是另一个'伪列表'
  • '伪列表' 可能嵌套到任何级别
  • 您想要计算这些'伪列表'

以下是我的想法:

  • 我将第一个列表称为一级列表
  • 我们有兴趣了解有多少级别2列表

代码:

import collections

li = '[[list1][list2][list3][list4]]'
counter = collections.Counter()
level = 0
for c in li:
    if c == '[':
        level += 1
        counter.update([level])
    elif c == ']':
        level -= 1

# We are interested in number of second-level lists
print 'List length:', counter[2]

输出:

List length: 4

此代码适用于任意嵌套列表,例如:

li = '[[1][2][3][4[a][b][c][d]]]'

答案 3 :(得分:0)

使用递归函数遍历嵌套列表树

  nested_list = [[['list 1'],['list 5']],['list2'],['list3'],['list4'],{'hello':'world'}]

 def countLists(nested_list):
   #print(nested_list)
   if len(nested_list)==1 & isinstance(nested_list,list):
        #print("return")
        return 1

    count=0
    for alist in nested_list:
         if isinstance(alist, list):
            retCount=countLists(alist)
            count+=retCount
            #print(alist)
    return count
        
countLists(nested_list)

输出: 5