Python не допускает точку .
как часть простого имени переменной.
Dept. = 'x' # NOT OK
dept = 'x' # ok
Переменные должны начинаться с буквы или подчеркивания, а затем могут содержать больше букв, цифр или подчеркиваний. Точка используется для обозначения учеников, но это другой ответ.
Строка "Dept" является частью словаря, поэтому она не видна Python под этим именем. На него можно ссылаться как на часть словаря:
if record["Dept."] == 'blah':
...
Итак, ваш код может работать так:
record = {'name': 'John_Smith', 'gender': 'M', 'age':45,'start_date':'2010/05/01','salary': 50000,'Dept.': 'Sales'}
query = "record['Dept.'] == 'Sales'"
if eval(query):
print(record)
Поскольку вы передаете record
в eval()
в качестве третьего параметра (объекта локальных переменных), достаточно просто удалить точку.
record = {'name': 'John_Smith', 'gender': 'M', 'age':45,'start_date':'2010/05/01','salary': 50000,'Dept': 'Sales'}
query = "Dept == 'Sales'"
if eval(query, {__builtins__: None}, record):
print(record)