logo

OrderedDict у Python

Ан OrderedDict це підклас словника, який запам'ятовує порядок, у якому ключі були вставлені спочатку. Єдина різниця між dict() і OrderedDict() полягає в тому, що вони обробляють порядок ключів у Python .

OrderedDict проти dict у Python

`OrderedDict` підтримує послідовність додавання ключів, забезпечуючи збереження порядку під час ітерації. Навпаки, стандартний словник не гарантує будь-який конкретний порядок під час ітерації, надаючи значення в довільній послідовності. `OrderedDict` відрізняється тим, що зберіг оригінальний порядок вставки елементів.



приклад: У цьому прикладі наведений нижче код демонструє різницю між звичайним словником (`dict`) і впорядкованим словником (`OrderedDict`). Спочатку він друкує елементи у звичайному словнику (`d`), де порядок вставки не гарантується.

Python
# A Python program to demonstrate working of OrderedDict from collections import OrderedDict print('This is a Dict:
') d = {} d['a'] = 1 d['b'] = 2 d['c'] = 3 d['d'] = 4 for key, value in d.items(): print(key, value) print('
This is an Ordered Dict:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value)>

Вихід:

  This is a Dict:  a 1  b 2 c 3 d 4   This is an Ordered Dict:  a 1 b 2 c 3 d 4>

Впорядкований словник Python

Тут є різні важливі моменти, пов’язані з упорядкуванням словника Python, ми обговорюємо деякі важливі моменти, пов’язані з Словник Python замовлення ті наступні.



java хвіст
  1. Ключове значення Зміна
  2. Видалення та повторне вставлення
  3. Рівність Порівняння
  4. Скасування OrderedDict
  5. OrderedDict Popitem Останній
  6. Вставка ключа в довільному положенні
  7. Модуль колекцій

Зміна значення ключа в порядку словника Python

Якщо значення певного ключа змінюється, позиція ключа залишається незмінною в OrderedDict. цей метод Python демонструє зміну значення, пов’язаного з ключем у OrderedDict.

приклад: У цьому прикладі наведений нижче код Python використовує OrderedDict, щоб продемонструвати зміну значення, пов’язаного з певним ключем. Спочатку він створює OrderedDict з ключами від «a» до «d» і відповідними значеннями від 1 до 4.

Python
# A Python program to demonstrate working of key # value change in OrderedDict from collections import OrderedDict print('Before:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After:
') od['c'] = 5 for key, value in od.items(): print(key, value)>

Вихід:



  Before:  a 1 b 2 c 3 d 4   After:  a 1 b 2 c 5 d 4>

Порівняння рівності в Python Порядок словника

OrderedDicts у Python можна порівняти на рівність не лише на основі їх вмісту, але й з огляду на порядок вставки. Це корисно під час порівняння двох OrderedDicts для пар ключ-значення та їх порядку.

Приклад: у цьому прикладі код створює два OrderedDicts, `od1` і `od2`, з різним порядком пар ключ-значення. Потім він демонструє, що порядок вставки враховується під час їх порівняння на рівність за допомогою оператора `==`, що призводить до `False`.

Python
from collections import OrderedDict # Create two ordered dictionaries with different orderings od1 = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) od2 = OrderedDict([('c', 3), ('b', 2), ('a', 1)]) # Compare the ordered dictionaries for equality print(od1 == od2)>

Вихід:

False>

Скасування OrderedDict у порядку словника Python

Після створення OrderedDict,reverse>застосовано метод, який змінює порядок пар ключ-значення на протилежний. Наступний цикл друкує елементи у зворотному порядку, підкреслюючи здатність OrderedDict полегшувати операції сторнування. OrderedDicts можна скасувати за допомогоюreverse>метод. Це змінює порядок пар ключ-значення в словнику на протилежний.

приклад: У цьому прикладі наведений нижче код використовує OrderedDict і змінює його пари ключ-значення за допомогою методу `reverse`. Наступний цикл друкує елементи у зворотному порядку, що призводить до результату: `c 3, b 2, a 1`.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) my_dict.reverse() for key, value in my_dict.items(): print(key, value)>

Вихід:

 c 3, b 2, a 1>

OrderedDict Popitem() і Порядок словника Python

The popitem()>метод в OrderedDict можна використовувати зlast>параметр для видалення та повернення останньої вставленої пари ключ-значення. Це корисно, коли ви хочете обробити елементи за принципом «останній прийшов – перший вийшов». Використання `popitem(last=True)` для OrderedDict видаляє та повертає останній доданий елемент, забезпечуючи гнучкість у управлінні порядком елементів.

приклад: У цьому прикладі наведений нижче код використовує OrderedDict і застосовує метод `popitem` з `last=True`, щоб видалити та зберегти останню вставлену пару ключ-значення. Потім він друкує вилучений елемент, що призводить до результату: `(‘c’, 3)`.

Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) last_item = my_dict.popitem(last=True) print(last_item)>

Вихід:

('c', 3)>

Вставка ключа в довільному положенні в Впорядкований словник Python

OrderedDict дозволяє вставити новий ключ у певну позицію за допомогоюmove_to_end>іmove_to_start>методи. Ця гнучкість дозволяє динамічно змінювати порядок ключів на основі використання або пріоритету .

приклад: У цьому прикладі наведений нижче код Python використовує OrderedDict для створення словника з упорядкованими парами ключ-значення. Потім він використовує метод `move_to_end`, щоб перемістити клавішу «a» в кінець і клавішу «b» на початок.

база даних java jdbc
Python
from collections import OrderedDict my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Move key 'a' to the end my_dict.move_to_end('a') # Move key 'b' to the beginning my_dict.move_to_end('b', last=False) for key, value in my_dict.items(): print(key, value)>

Вихід:

b 2, c 3, a 1>

Видалення та повторне вставлення Впорядкований словник Python

Видалення та повторне вставлення того самого ключа відсуне його назад, оскільки OrderedDict зберігає порядок вставлення. Цей метод демонструє операції видалення та повторного вставлення в Python OrderedDict. Спочатку він заповнює OrderedDict парами ключ-значення, видаляє запис, друкує оновлений OrderedDict, а потім знову вставляє видалений запис, демонструючи впорядкований характер словника.

приклад: У цьому прикладі наведений нижче код python демонструє видалення, повторне вставлення та друк елементів у OrderedDict. Спочатку він друкує елементи OrderedDict, потім видаляє запис із ключем «c», друкує оновлений OrderedDict і, нарешті, повторно вставляє «c» із його значенням, знову друкуючи OrderedDict.

Python
# A Python program to demonstrate working of deletion # re-insertion in OrderedDict from collections import OrderedDict print('Before deleting:
') od = OrderedDict() od['a'] = 1 od['b'] = 2 od['c'] = 3 od['d'] = 4 for key, value in od.items(): print(key, value) print('
After deleting:
') od.pop('c') for key, value in od.items(): print(key, value) print('
After re-inserting:
') od['c'] = 3 for key, value in od.items(): print(key, value)>

Вихід:

  Before deleting:  a 1 b 2 c 3 d 4   After deleting:  a 1 b 2 d 4   After re-inserting:  a 1 b 2 d 4 c 3>

Модуль колекцій у Python Порядок словника

OrderedDict є частиною модуль колекцій в Python. Він надає всі методи та функції звичайного словника, а також деякі додаткові методи, які використовують переваги впорядкування елементів. Ось декілька прикладів використання OrderedDict у Python:

приклад: У цьому прикладі наведений нижче код використовує OrderedDict для створення словника з упорядкованими парами ключ-значення. Він додає новий пункт «d» у кінець і вставляє елементи «e» і «f» на початку, а «e» переміщується на передній план. Останній цикл друкує елементи словника в порядку їх додавання.

Python
from collections import OrderedDict # Create an ordered dictionary of key-value pairs my_dict = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Add a new item to the end of the dictionary my_dict['d'] = 4 # Add a new item at a specific position in the dictionary # my_dict.update({'e': 5, 'f': 6}) or below my_dict.update([('e', 5), ('f', 6)]) my_dict.move_to_end('e', last=False) # Iterate over the dictionary in the order in which items were added for key, value in my_dict.items(): print(key, value)>

Вихід:

e 5 a 1 b 2 c 3 d 4 f 6>

Часова складність:

  • Отримати предмет (ключ): О(1)
  • Набір елементів (ключ, значення): О(1)
  • Видалити елемент (ключ): O(n)
  • Ітерація: O(n)

Космічна складність: O(n)

OrderedDict — це підклас словника в Python, який запам’ятовує порядок додавання елементів. У звичайному словнику Python порядок елементів не гарантується, і він може змінюватися між різними запусками програми або різними версіями Python. Однак OrderedDict зберігає порядок елементів, коли вони були додані, навіть якщо нові елементи додаються пізніше або існуючі елементи змінюються.

Інші міркування

  • Упорядкований dict у Python версії 2.7 споживає більше пам’яті, ніж звичайний dict. Це пов’язано з базовою реалізацією подвійного зв’язаного списку для збереження порядку. У Python 2.7 Ordered Dict не є підкласом dict, це спеціалізований контейнер із модуля колекцій.
  • Починаючи з Python 3.7, порядок вставки словників Python гарантований.
  • Упорядкований Dict можна використовувати як стек за допомогою я п'ю функція. Спробуйте реалізувати кеш LRU за допомогою Ordered Dict.