所以我有一个巨大的列表,其中嵌套了许多列表,我想得到这个大外部列表中列表数量的计数。问题是这些列表没有被任何东西分开,如下所示:
[[list1][list2][list3][list4]]
请帮忙!
答案 0 :(得分:1)
根据评论,您的列表看起来像
nested = ['[a][b][c][d]']
(所以len(nested)=1
和type(nested_list[0])
是str
)
要计算"列表"的数量,您可以执行以下操作:
len(nested[0].split(']['))
答案 1 :(得分:0)
假设您的数据是一个字符串,因为它不可能是一个列表,如果列表没有嵌套得更深并且不包含包含][
的字符串,则可以尝试以下操作:
x = '[[list1][list2][list3][list4]]'
print (len (x.split ('][') ) )
>>> 4
答案 2 :(得分:0)
以下是我的假设,基于您的描述:
以下是我的想法:
代码:
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