Заменить ключи в словаре

У меня есть словарь

event_types={"as":0,"ah":0,"es":0,"eh":0,"os":0,"oh":0,"cs":0,"ch":0}

Как заменить a на append, s на see, h на horse, e на exp с промежутком между ними.

Выведите что-то вроде:

{"append see":0,"append horse":0,"exp horse":0....}

Ответ 1

У вас есть другой словарь с вашими заменами, например

keys = {"a": "append", "h": "horse", "e": "exp", "s": "see"}

Теперь, если ваши события выглядят так:

event_types = {"as": 0, "ah": 0, "es": 0, "eh": 0}

Просто восстановите его с пониманием словаря, как это

>>> {" ".join([keys[char] for char in k]): v for k, v in event_types.items()}   
{'exp see': 0, 'exp horse': 0, 'append see': 0, 'append horse': 0}

Здесь " ".join([keys[char] for char in k]), итерации символов в k, выбирает соответствующие слова из словаря keys и формирует список. Затем элементы списка объединяются с символом пробела, чтобы получить желаемый ключ.

Ответ 2

Итерации по клавишам и значениям исходного словаря, трансформируйте ключ, затем сохраните значение в результирующем словаре с помощью трансформированного ключа. Чтобы преобразовать ключ, нарисуйте его символы, замените его поиском в словаре сопоставления ({ "a" : "append", ... }), затем соедините с пробелами.

Ответ 3

Сначала создайте словарь сопоставления, чтобы отобразить отдельные буквы в слова:

mm={"a":"append", "s":"see","h":"horse","e":"exp","c":"corn","o":"ocelot"}

затем преобразуйте словарь ввода в список ключей, кортежей значений, перепишите ключ с помощью сопоставления dict и создайте новый список кортежей, состоящий из нового ключа, исходного значения, окончательно преобразуйте список кортежей в dict.

dict(map(lambda e: ("%s %s" % (mm[e[0][0]], mm[e[0][1]]), e[1]), event_types.items()))

Ответ 4

Не уверен, что вы можете добавить или нет, но вы можете сделать следующий один лайнер:

>>> dict={}
>>> dict={"a":"b"}
>>> dict["aha"]=dict.pop("a")
>>> dict
{'aha': 'b'}

Вы можете перемещать ключи и изменять их в соответствии с вашими потребностями.