[英]Count number of lists within a nested list that is not separated
所以我有一个巨大的列表,其中嵌套了许多列表,我想计算这个大外部列表中的列表数量。 问题是这些列表没有被任何东西分隔,看起来像这样:
[[list1][list2][list3][list4]]
请帮忙!
根据评论,您的列表看起来像
nested = ['[a][b][c][d]']
(所以len(nested)=1
,而type(nested_list[0])
是str
)
要计算“列表”的数量,您可以执行以下操作:
len(nested[0].split(']['))
假设您的数据是一个字符串,因为它不可能是一个列表,您可以尝试以下操作,如果列表没有更深地嵌套并且不包含包含][
字符串:
x = '[[list1][list2][list3][list4]]'
print (len (x.split ('][') ) )
>>> 4
以下是我的假设,根据您的描述:
这是我的想法:
代码:
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]]]'
使用递归函数遍历嵌套列表树
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.