как посчитать количество словарей в списке python в al oop? - PullRequest
3 голосов
/ 08 февраля 2020

Мне нужно посчитать, сколько словарей в списке python, чтобы я мог перебирать каждый из них? Можно ли это сделать из-за oop. Я делаю вычисления для каждого словаря, поэтому мне нужно просмотреть все, что доступно в списке.

dataList = [{'a': 1,'b':2,'c':3}, {'a':3,'b': 3,'c':5}, {'a': 5,'b': 4,'c': 5}]

Большое спасибо

Ответы [ 3 ]

1 голос
/ 08 февраля 2020

Попробуйте:

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
0 голосов
/ 08 февраля 2020

если в вашем списке есть только словари, чем вы можете использовать встроенную функцию len:

len(my_list)

если в вашем списке есть и другие объекты, кроме словарей, чем вы можете отфильтровать свой список чтобы сохранить только словари в списке, чем использовать тот же метод len:

len([e for e in my_list if isinstance(e, dict)])

или вы можете использовать встроенную функцию sum:

sum(1 for e in my_list if isinstance(e, dict))
0 голосов
/ 08 февраля 2020

Если все элементы в списке являются словарями, вам не нужно знать длину для их перебора.

data_list = [{'a': 1,'b':2,'c':3}, {'a':3,'b': 3,'c':5}, {'a': 5,'b': 4,'c': 5}]

for data_item in data_list:
  # perform operations with data_item, which is an element in the list.

  # From @Klaus D.'s comment, you can verify whether each element is a dictionary or not.
  if isinstance(data_item, dict):
    # continue using
  # else, continue to next iteration.

Документы: isinstance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...