Как указано в комментариях ast.literal_eval безопасно. Из документов:
Безопасно оценить выражение node или строку, содержащую Python выражение. Строка или node предоставляется может состоять только из следующие литеральные структуры Python: строки, числа, кортежи, списки, dicts, booleans и None.
Это можно использовать для безопасной оценки строк, содержащих Python выражения из ненадежных источников без необходимости разбирать ценит себя.