Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {'в': 1, 7: [1,5], 'у': 'abc', '9': []}
- {имя_типа : количество_элементов_этого_типа}
- # 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)
- 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)) # преобразуем в обычный словарь для вывода в нужном формате.
- # Если я правильно понял то нам нужно узнать типы всех элементов как ключей так и значений, по этому для удобства переводим ключи и значения в линейный список.
- def inline_key_value_array(dic):
- # Помните, использование глобальных переменных внутри функций не лучшая практика.
- types[type(dic).__name__] = types.get(type(dic).__name__, 0) + 1
- result = []
- for key, value in dic.items():
- result.append(key)
- if isinstance(value, dict):
- result += inline_key_value_array(value)
- elif isinstance(value, set) or isinstance(value, tuple) or isinstance(value, list):
- result += inline_value_array(value)
- else:
- result.append(value)
- return result
- def inline_value_array(lst):
- # Помните, использование глобальных переменных внутри функций не лучшая практика.
- types[type(lst).__name__] = types.get(type(lst).__name__, 0) + 1
- result = []
- for value in lst:
- if isinstance(value, dict):
- result += inline_key_value_array(value)
- elif isinstance(value, set) or isinstance(value, tuple) or isinstance(value, list):
- result += inline_value_array(value)
- else:
- result.append(value)
- return result
- types = {}
- input_dic = {'в': 1, 7: [1,5], 'у': {'в': 1, 7: [1,5], 'у': 'abc', '9': [1]}, '9': {2, 5}}
- # Разворачием словарь в линейный список
- input_list = inline_key_value_array(input_dic)
- for i in input_list:
- # Получаем название типа и подставляем его как ключ. Так же используем .get на случай если значение словаря не объявлено.
- types[type(i).__name__] = types.get(type(i).__name__, 0) + 1
- print(types)
Add Comment
Please, Sign In to add comment