Задать вопрос
@Sidorenko-ml

Как переименовать ключ в словаре с помощью цикла for или while?

Пытаюсь решить задачку связанную с циклами.

Дан словарь:

{'test': 'test_value', 'europe': 'eur', 'dollar': 'usd', 'ruble': 'rub'}

#Добавить каждому ключу число равное длине этого ключа (пример {'key': 'value'} -> {'key3': 'value'}).
# Чтобы получить список ключей - использовать метод .keys().

Вот мой код (хочу написать через функцию):

Dict1 = {'test': 'test_value',  
              'europe': 'eur',  
              'dollar': 'usd',  
              'ruble': 'rub'}

def KeyLen(dict):
    for k in dict.keys():
        k = k + str(len(k))
        return k    
    return dict.keys()
print(KeyLen(Dict1))

Если я пишу таким образом, то получаю в ответ только "test4".
Можете пожалуйста намекнуть, куда копать?
Я вроде понимаю, что я принимаю словарь, я его и должен вернуть потом, но не работает return dict вместо return dict.keys().
  • Вопрос задан
  • 160 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
@PavelMos
Изменение значение по ключу =изменения значения
Изменения ключа = создание нового ключа, с удалением или без удаления старого. По задаче, как понимаю, старый нужно удалять

def KeyLen(d1):
    d2=d1.copy() #надо копировать один объект (словарь) в другой, т.к. если присвоить через =, то при измененении первого будет меняться и второй
    for k1 in d1.keys():
        k2=k1+str(len(k1))
        d2[k2]=d1[k1]
        del d2[k1]
    return (d2)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы