Заменить ключи в словаре
У меня есть словарь
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'}
Вы можете перемещать ключи и изменять их в соответствии с вашими потребностями.