Как сделать сдвиг значений ключа словаря?

Рейтинг: -1Ответов: 1Опубликовано: 17.02.2023

Есть изначальный словарь:

rooms = {'room_1': 1, 'room_2': 2, 'room_3': 3, 'room_4': 4}

Нужно сделать функцию для сдвига значений ключей вправо и влево на определенное кол-во шагов, которое мы задаем в вводе. Что я имею ввиду:

Если мы вводим что step = 1, то выполняется следующий сдвиг:

rooms = {'room_1': 4, 'room_2': 1, 'room_3': 2, 'room_4': 3}

Если мы вводим что step = -1, то выполняется следующий сдвиг:

rooms = {'room_1': 2, 'room_2': 3, 'room_3':4, 'room_4': 1}

Ответы

▲ 0

Вот готовый код для сдвига значений словаря:

def shift_dict(d, shift):
    keys = list(d.keys())
    values = list(d.values())
    n = len(d)
    new_values = values[-shift % n:] + values[:-shift % n]
    return dict(zip(keys, new_values))


d = {'room_1': 1, 'room_2': 2, 'room_3': 3, 'room_4': 4}
shift = 1
print(shift_dict(d, shift)) 
 
# {'room_1': 4, 'room_2': 1, 'room_3': 2, 'room_4': 3}