Почему выводит ошибку если проверить наличие типа в словаре?
у меня в словаре находятся типы для проверки на тип присваиваемых данных элементам
почему выводит ошибку если проверить type(a)#int in dict_1['id']
Например если проверить тип на наличие в списке ошибку не выводит, а в словаре выводит ошибку 
Ответы (2 шт):
Попробуйте просто использовать равенство: type(a) == allow['id'].
Вы пытаетесь проверить наличие type(a) не в словаре, а в отдельном значении (которое в этом словаре хранится), которое, при этом, не является итерируемым объектом (списком например).
Значения в словаре не списки:
intне список,strне список. Другие значения - списки. Для нихinсработает.Не рекомендуется проверять типы в Питоне равенством вида
type(a) == str. По той же причине плохо писатьtype(a) in [int, float]- принадлежность списку разворачивается в последовательное сравнение типов на равенство.Рекомендуемый способ - isinstance.
isinstanceпринимает вторым аргументов тип или кортеж типов. Вот этот код работает так как вам нужно:
@>>> allow = {'id': int, 'name': str, 'weight': (int, float), 'price': (int, float)} @>>> a = 1 @>>> isinstance(a, allow['id']) True @>>> isinstance(a, allow['weight']) True


