вы можете использовать мета-словарь с ключом, являющимся ключом вашего словаря, и значением будет тип для преобразования, по умолчанию для преобразования в строку, если ключ не найден:
meta_dict = { "Cat": int, "Food": float, "Enough": bool }
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True", "misc":"other" } # adding a string key for the demo
new_dict = { k:meta_dict.get(k,str)(v) for k,v in my_dict.items()}
print(new_dict)
печатает:
{'Cat': 1, 'Food': 1.5, 'Enough': True, 'misc': 'other'}
если у вас нет строковых ключей, а есть только целые числа, числа с плавающей запятой и логические значения, вы можете использовать ast.literal_eval
, чтобы угадать тип и преобразовать в него:
import ast
my_dict = { "Cat": "1", "Food": "1.5", "Enough": "True" }
new_dict = { k:ast.literal_eval(v) for k,v in my_dict.items()}
ВВ будущем сохраните и перезагрузите файл как json
, чтобы типы были сохранены.