logo

BestelDict in Python

Een BesteldDict is een woordenboeksubklasse die de volgorde onthoudt waarin sleutels voor het eerst werden ingevoegd. Het enige verschil tussen dict() en OrderedDict() ligt in de afhandeling van de sleutelvolgorde in Python .

OrderedDict versus dict in Python

`OrderedDict` handhaaft de volgorde waarin sleutels worden toegevoegd, en zorgt ervoor dat de volgorde tijdens de iteratie behouden blijft. Een standaardwoordenboek garandeert daarentegen geen specifieke volgorde wanneer het wordt herhaald, waarbij waarden in een willekeurige volgorde worden verstrekt. `OrderedDict` onderscheidt zich door de oorspronkelijke invoegvolgorde van items te behouden.



dereferentiewijzer c

Voorbeeld: In dit voorbeeld demonstreert de onderstaande code het verschil tussen een regulier woordenboek (`dict`) en een geordend woordenboek (`OrderedDict`). Het drukt eerst de items af in een gewoon woordenboek (`d`) waarbij de volgorde van invoeging niet gegarandeerd is.

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)>

Uitgang:

  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-woordenboek besteld

Er zijn verschillende belangrijke punten gerelateerd aan het bestellen van Python-woordenboeken hier, we bespreken enkele belangrijke punten die hiermee verband houden Python-woordenboek deze volgen.



  1. Sleutelwaarde Verandering
  2. Verwijderen en opnieuw invoegen
  3. Gelijkheidsvergelijking
  4. Bestelde Dict Reversal
  5. BestelDict Popitem Last
  6. Sleutelinvoer op willekeurige positie
  7. Collectiemodule

Sleutelwaarde Wijziging in Python-woordenboekvolgorde

Als de waarde van een bepaalde sleutel wordt gewijzigd, blijft de positie van de sleutel in OrderedDict ongewijzigd. deze Python-methode demonstreert het wijzigen van de waarde die aan een sleutel in een OrderedDict is gekoppeld.

Voorbeeld : In dit voorbeeld gebruikt de onderstaande Python-code een OrderedDict om aan te tonen dat de waarde die aan een specifieke sleutel is gekoppeld, wordt gewijzigd. In eerste instantie wordt er een OrderedDict gemaakt met de toetsen ‘a’ tot en met ‘d’ en de respectievelijke waarden 1 tot en met 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)>

Uitgang:



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

Gelijkheidsvergelijking in Python Woordenboekvolgorde

OrderedDicts in Python kunnen op gelijkheid worden vergeleken, niet alleen op basis van hun inhoud, maar ook op basis van de volgorde van invoeging. Dit is handig bij het vergelijken van twee OrderedDicts voor beide sleutel-waardeparen en hun volgorde.

Voorbeeld: In dit voorbeeld maakt de code twee OrderedDicts, `od1` en `od2`, met verschillende volgorden van sleutelwaardeparen. Vervolgens wordt gedemonstreerd dat er rekening wordt gehouden met de volgorde van invoeging bij het vergelijken van de gelijkheid met behulp van de `==` operator, wat resulteert in `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)>

Uitgang:

False>

Bestelde Dict Reversal in Python-woordenboekvolgorde

Na het aanmaken van een OrderedDict, wordt hetreverse>Er wordt een methode toegepast, die de volgorde van de sleutelwaardeparen omkeert. De daaropvolgende lus drukt de items in de omgekeerde volgorde af, wat het vermogen van de OrderedDict benadrukt om omkeerbewerkingen te vergemakkelijken. OrderedDicts kunnen worden teruggedraaid met behulp van dereverse>methode. Dit keert de volgorde van sleutel-waardeparen in het woordenboek om.

Voorbeeld : In dit voorbeeld gebruikt de onderstaande code een OrderedDict en keert de sleutel-waardeparen om met behulp van de `reverse`-methode. De volgende lus drukt de items in omgekeerde volgorde af, wat resulteert in de uitvoer: `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)>

Uitgang:

 c 3, b 2, a 1>

OrderedDict Popitem() en Python-woordenboekvolgorde

De popitem()>methode in OrderedDict kan worden gebruikt met delast>parameter om het laatst ingevoegde sleutel-waardepaar te verwijderen en terug te sturen. Dit is handig als u artikelen op een last-in, first-out-manier wilt verwerken. Het gebruik van `popitem(last=True)` op een OrderedDict zou het meest recent toegevoegde item verwijderen en retourneren, wat flexibiliteit biedt bij het beheren van de volgorde van elementen.

Voorbeeld : In dit voorbeeld gebruikt de onderstaande code een OrderedDict en past de methode `popitem` met `last=True` toe om het laatst ingevoegde sleutel-waardepaar te verwijderen en op te slaan. Vervolgens wordt het verwijderde item afgedrukt, wat resulteert in de uitvoer: `(‘c’, 3)`.

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

Uitgang:

('c', 3)>

Sleutelinvoer op willekeurige positie in Python-woordenboek besteld

Met OrderedDict kunt u een nieuwe sleutel op een specifieke positie plaatsen met behulp van demove_to_end>Enmove_to_start>methoden. Deze flexibiliteit maakt het dynamisch herschikken van sleutels mogelijk op basis van gebruik of prioriteit .

Voorbeeld : In dit voorbeeld gebruikt de onderstaande Python-code een OrderedDict om een ​​woordenboek te maken met geordende sleutel-waardeparen. Vervolgens wordt de methode `move_to_end` gebruikt om sleutel ‘a’ naar het einde en sleutel ‘b’ naar het begin te verplaatsen.

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)>

Uitgang:

b 2, c 3, a 1>

Verwijderen en opnieuw invoegen Python-woordenboek besteld

Als u dezelfde sleutel verwijdert en opnieuw plaatst, wordt deze naar achteren geduwd, aangezien OrderedDict echter de volgorde van invoegen behoudt. Deze methode toont verwijderings- en herinvoegingsbewerkingen in een Python OrderedDict. In eerste instantie vult het de OrderedDict met sleutel-waardeparen, verwijdert een item, drukt het bijgewerkte OrderedDict af en voegt vervolgens het verwijderde item opnieuw in, wat de geordende aard van het woordenboek aantoont.

Voorbeeld : In dit voorbeeld demonstreert de onderstaande Python-code het verwijderen, opnieuw invoegen en afdrukken van items in een OrderedDict. Het drukt eerst de OrderedDict-items af, verwijdert vervolgens de invoer met toets ‘c’, drukt de bijgewerkte OrderedDict af en voegt ten slotte ‘c’ opnieuw in met zijn waarde, waarbij de OrderedDict opnieuw wordt afgedrukt.

Java-invoegsortering
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)>

Uitgang:

  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>

Collectiemodule in Python Woordenboekvolgorde

OrderedDict is onderdeel van de collecties module in Python. Het biedt alle methoden en functionaliteit van een gewoon woordenboek, evenals enkele aanvullende methoden die profiteren van de volgorde van de items. Hier zijn enkele voorbeelden van het gebruik van OrderedDict in Python:

Voorbeeld : In dit voorbeeld gebruikt de onderstaande code een OrderedDict om een ​​woordenboek te maken met geordende sleutel-waardeparen. Het voegt een nieuw item ‘d’ toe aan het einde en voegt items ‘e’ en ‘f’ in aan het begin, waarbij ‘e’ naar voren wordt verplaatst. In de laatste lus worden de woordenboekitems afgedrukt in de volgorde waarin ze zijn toegevoegd.

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)>

Uitgang:

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

Tijdcomplexiteit:

  • Artikel ophalen (sleutel): O(1)
  • Item instellen(sleutel, waarde): O(1)
  • Item verwijderen(sleutel): Op)
  • Iteratie: Op)

Ruimtecomplexiteit: Op)

OrderedDict is een woordenboeksubklasse in Python die de volgorde onthoudt waarin items zijn toegevoegd. In een regulier Python-woordenboek is de volgorde van de items niet gegarandeerd, en deze kan veranderen tussen verschillende uitvoeringen van het programma of verschillende versies van Python. Een OrderedDict behoudt echter de volgorde van de items zoals ze zijn toegevoegd, zelfs als er later nieuwe items worden toegevoegd of bestaande items worden gewijzigd.

Andere Overwegingen

  • Besteld dictaat in Python versie 2.7 verbruikt meer geheugen dan normaal dictaat. Dit komt door de onderliggende Doubly Linked List-implementatie voor het behouden van de bestelling. In Python 2.7 is Ordered Dict geen dict-subklasse, het is een gespecialiseerde container uit de collectiemodule.
  • Vanaf Python 3.7 is de invoegvolgorde van Python-woordenboeken gegarandeerd.
  • Besteld Dict kan als stapel worden gebruikt met behulp van ik drink functie. Probeer LRU-cache te implementeren met Ordered Dict.