Как сделать сдвиг значений ключа словаря?
Есть изначальный словарь:
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}
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
Вот готовый код для сдвига значений словаря:
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}