Поиск по сайту:

Программа Python для поворота словаря на K


Реализация Python структуры данных, более известной как ассоциативный массив, представляет собой словарь. Словарь состоит из группы пар ключ-значение. Каждая комбинация «ключ-значение» соответствует ключу и соответствующему ему значению.

Учитывая словарь с некоторыми случайными парами ключ-значение, в этой статье мы узнаем, как вращать данный словарь на K в Python.

Используемые методы

Ниже приведены различные методы выполнения этой задачи:

  • Использование понимания списка, items() и понимания словаря

  • Использование словарного понимания, функций deque.rotate() и items().

Пример

Предположим, мы взяли входной словарь и K вращений. Теперь мы повернём входной словарь k раз и напечатаем результирующий словарь после k вращений.

Вход

inputDict = {2: 5, 4: 6, 1: 3, 9: 4, 5: 1}
k=3

Выход

{1: 3, 9: 4, 5: 1, 2: 5, 4: 6}

В приведенном выше примере значение K равно 3. Введите словарь после:

1-й оборот: {5:1, 2:5, 4:6, 1:3, 9:4}

2-й оборот: {9:4, 5:1, 2:5, 4:6, 1:3}

3-й оборот: {1:3, 9:4, 5:1, 2:5, 4:6}

Метод 1. Использование понимания списка, items() и понимания словаря.

В этом методе мы поймем, как использовать понимание списка и понимание словаря для поворота словаря на K.

Синтаксис

enumerate(iterable, start=0)

Метод enumerate() добавляет счетчик к итерируемому объекту и возвращает объект перечисления.

Параметры

  • iterable — это может быть любая последовательность/объект/итерируемый объект, поддерживающий итерацию.

  • start-enumerate() начинает отсчет с этого значения. Если начало не указано, используется значение 0.

Алгоритм (шаги)

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

  • Создайте переменную для хранения входного словаря.

  • Распечатайте входной словарь.

  • Создайте еще одну переменную для хранения введенного количества k оборотов.

  • Используйте функцию items() (возвращает объект представления, т. е. он содержит пары ключ-значение словаря в виде кортежей в списке), чтобы получить ключ и значение словаря.

  • Преобразуйте это в список кортежей с помощью функции list() (преобразует последовательность/итерируемую информацию в список)

  • Перейдите по индексу, элементу списка, используя функцию enumerate(), и поверните его на k, используя математическую логику.

  • Снова преобразуйте список результатов кортежей в словарь, используя понимание словаря.

  • Распечатайте результирующий словарь после вращения словаря k раз.

Пример

Следующая программа возвращает словарь после поворота входного словаря на заданные входные вращения K, используя понимание списка, элементы() и понимание словаря:

# input dictionary
inputDict = {2: 5, 4: 6, 1: 3, 9: 4, 5: 1}
# printing input dictionary
print("Input Dictionary:", inputDict)
# input K rotations
k = 3
# getting the key, and value of the dictionary as a tuple and converting it into the list
inputDict = list(inputDict.items())
# rotationg the input dictionary by k rotations
resultList = [inputDict[(p - k) % len(inputDict)] for p, m in enumerate(inputDict)]
# converting the result list of tuples into a dictionary again
# using dictionary comprehension
resultantDict = {e[0]: e[1] for e in resultList}
# printing the resultant dictionary after given input k rotations
print("Resultant dictionary after", k, "rotations:", resultantDict)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input Dictionary: {2: 5, 4: 6, 1: 3, 9: 4, 5: 1}
Resultant dictionary after 3 rotations: {1: 3, 9: 4, 5: 1, 2: 5, 4: 6}

Метод 2. Использование словарного понимания, функций deque.rotate() и items().

Двусторонняя очередь, также известная как deque, позволяет пользователям добавлять и удалять элементы с любого конца. Модуль Deque принадлежит библиотеке коллекций. Он предоставляет методы, которые можно использовать напрямую с аргументами для добавления и удаления элементов.

Когда нам нужны более быстрые операции добавления и извлечения с обоих концов контейнера, вместо списков выбирается deque, поскольку deque предлагает временную сложность O(1) для операций добавления и извлечения, тогда как списки предлагают временную сложность O(n) .

Функция deque.rotate() — дек поворачивается на число, указанное в аргументах с помощью этой функции. Вращение происходит влево, если заданное число отрицательно. В противном случае вращение будет вправо.

Алгоритм (шаги)

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

  • Используйте ключевое слово import, чтобы импортировать дек из модуля коллекций.

  • Используйте функцию items(), чтобы получить пары «ключ» и «значение» словаря.

  • Преобразуйте это в список кортежей с помощью функции list() (преобразует последовательность/итерацию в список)

  • Используйте функцию deque(), передав ей входной словарь в качестве аргумента, чтобы преобразовать словарь в двухстороннюю очередь.

  • Используйте функцию Rotate(), передав ей входное значение k, и примените его к деку, чтобы повернуть входной словарь на k вращений.

  • Используйте функцию list() (возвращает список итерируемых объектов), чтобы преобразовать результат в список.

  • Снова преобразуйте список результатов кортежей в словарь, используя понимание словаря.

  • Распечатайте результирующий словарь после вращения словаря k раз.

Пример

Следующая программа возвращает словарь после поворота входного словаря на заданные входные вращения K с использованием словарного понимания, функций deque.rotate() и items():

# importing deque from the collections module
from collections import deque
# input dictionary
inputDict = {2: 5, 4: 6, 1: 3, 9: 4, 5: 1}
# printing input dictionary
print("Input Dictionary:", inputDict)
# input K rotations
k = 3
# getting the key, value of dictionary as a tuple
# and converting it into the list
inputDict = list(inputDict.items())
# Converting input dictionary to deque
dequeObject = deque(inputDict)
# rotating the deque object by k rotations
dequeObject.rotate(k)
# converting into the list
resultList = list(dequeObject)
# converting the result list of tuples into a dictionary again
resultantDict = {e[0]: e[1] for e in resultList}
# printing the resultant dictionary after input k rotations
print("Resultant dictionary after", k, "rotations:", resultantDict)

Выход

При выполнении вышеуказанная программа сгенерирует следующий вывод:

Input Dictionary: {2: 5, 4: 6, 1: 3, 9: 4, 5: 1}
Resultant dictionary after 3 rotations: {1: 3, 9: 4, 5: 1, 2: 5, 4: 6}

Заключение

В этой статье мы узнали два разных способа повернуть словарь в K раз. Мы также узнали, как использовать функцию Rotate() для добавления поворота к объекту двухсторонней очереди и как преобразовать данный словарь в двухуровневую очередь.

Статьи по данной тематике: