0

Дан словарь с элементами разных типов

{'в': 1, 7: [1,5], 'у': 'abc', '9': []}

Нужно вывести словарь вида

{имя_типа : количество_элементов_этого_типа}
Twiss
  • 6,393
Helen18
  • 31
  • 1
    Добавьте результат для приложенного вами словаря и, хорошо бы, пример ваших наработок – gil9red Mar 23 '18 at 08:41

3 Answers3

2
from collections import Counter
data = {'в': 1, 7: [1,5], 'у': 'abc', '9': []}
counter = Counter(type(v).__name__ for k, v in data.items())
print(dict(counter)) # преобразуем в обычный словарь для вывода в нужном формате.
godva
  • 1,495
0
# type str
type_str_val = 0

# type int
type_int_val = 0

# type float
type_float_val = 0

#type tuple
type_tuple_val = 0


# словарть который идет на выход, пока значение всех ключей None.
return_dict = {
    "type_int": None,
    "type_str": None,
    "type_float": None,
    "type_tuple": None,
}

slovar = {
    1: 10,
    2: 15,
    1.4: 4.5,
    "str": 'value',
    (1,): "typle",
    "value_list": [1, 2, 3, 4, 5],
    "value_dict": {1: 2, "str": "value_str"}
}

# приходим по словарю
for key, value in slovar.items():
    if type(key) == str:
        type_str_val += 1   # если есть ключ, то и есть значение.

    if type(key) == int:
        type_int_val += 1

    if type(key) == float:
        type_float_val += 1

    if type(key) == tuple:
        type_tuple_val += 1


# Обновляем словарть новыми значаниями
return_dict["type_int"] = type_int_val
return_dict["type_str"] = type_str_val
return_dict["type_float"] = type_float_val
return_dict["type_tuple"] = type_tuple_val


print(return_dict)

Результат работы:
{'type_int': 2, 'type_str': 3, 'type_float': 1, 'type_tuple': 1}

На будущее, список книг:
1) введите сюда описание ссылки
2) введите сюда описание ссылки
3) введите сюда описание ссылки

  • Считаю что переменные типо type_str_val не нужны. Сразу в словаре заведите их ... "type_int": 0, ..., а при обработке вместо type_str_val += 1 будет return_dict["type_str"] += 1 2) Нужно подправить в ссылках название "введите сюда описание ссылки"
  • – gil9red Mar 23 '18 at 08:29
  • Да и так можно. – Расулов Гамзат Mar 23 '18 at 08:31
  • Можно и массив на 100 элементов заполнять на 100 строк по индексу, а лучше все-таки это делать цикле. Так и тут, если перенесете из переменных сразу в словарь, код сократится на 20 строк – gil9red Mar 23 '18 at 08:39