Попробуйте:
dataList = [[0, {"1":1}, {"5":5}], {'a': 1,'b':2,'c':3}, {'a':3,'b': 3,'c':5}, {'a': 5,'b': 4,'c': 5}, [2, [2, {"100":2, "120":{100:1}}]]]
def numDict(li):
count = 0
if isinstance(li, str):
return 0
if isinstance(li, dict):
return return numDict(li.values()) + numDict(li.keys()) + 1
try:
for i in li:
count = count + numDict(i)
except TypeError:
return 0
return count
print(numDict(dataList))
Он также обрабатывает вложенные словари. Я использую рекурсив, и у него есть ограничение на количество рекурсивных вызовов, которые он может сделать. Если вы превышаете определенную глубину вложенных словарей, вы получите следующую ошибку:
RecursionError: maximum recursion depth exceeded while calling a Python object
Вывод:
7