Изменение клавиш словаря с помощью функции

#python

Вопрос:

Предположим, словарь, подобный

 d1 = {
    'a b':1,
    'c-d':2,
    'Ef':3
}
 

Я хочу запустить функцию, которая переименовывает все ключи в соответствии с некоторыми правилами, например, строчными буквами и изменением пробелов и — на _. Чтобы получить результат:

 d2 = {
    'a_b':1,
    'c_d':2,
    'ef':3
}
 

Разница между этим вопросом и другими аналогичными вопросами на этом сайте о переименовании ключей словаря заключается в том, что здесь мы не знаем столбцы заранее. Поэтому мы хотим запустить функцию переименования для всех ключей (чтобы нормализовать их или что-то в этом роде).

Комментарии:

1. просто зацикливайтесь на каждом ключе/значении в новом дикте

Ответ №1:

Объявите такую функцию, затем используйте понимание словаря (поиск «понимания диктанта»), чтобы выполнить цикл над элементами диктанта и вызвать этот преобразователь.

 def transform_key(key):
    return key.lower().replace(" ", "_").replace("-", "_")

d1 = {
    'a b':1,
    'c-d':2,
    'Ef':3
}

d2 = {transform_key(key): value for (key, value) in d1.items()}
print(d2)
 

выходы

 {'a_b': 1, 'c_d': 2, 'ef': 3}