logo

Python | Twee woordenboeken samenvoegen

In Python is een woordenboek een gegevensstructuur die het element in het sleutel-waardepaar bevat waarin sleutels worden gebruikt om toegang te krijgen tot de waarden in het woordenboek. Python heeft een aantal ingebouwde woordenboeken zoals defaultdict. In dit artikel zullen we verschillende manieren zien om twee woordenboeken samen te voegen.

Voorbeeld



  Input:   dict1 = {'a': 10, 'b': 8}  dict2 = {'d': 6, 'c': 4}   Output:   {'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Twee woordenboeken samenvoegen in Python

Er zijn verschillende manieren waarop Woordenboeken kan worden samengevoegd door verschillende functies en constructors in Python te gebruiken. Hieronder vindt u enkele volgende manieren:

  • Gebruik makend van update()
  • Gebruik makend van uitpak operator
  • Samenvoegen gebruiken | exploitant
  • Met behulp van lussen en sleutels() methode
  • Met behulp van dict-constructor
  • De constructor dict() gebruiken met de union-operator (|)
  • Gebruik makend van verminderen()

Python-update()

Door de methode te gebruiken update() in Python kan de ene lijst in de andere worden samengevoegd. Maar hierbij wordt de tweede lijst samengevoegd met de eerste lijst en wordt er geen nieuwe lijst gemaakt. Het keert terug Geen . In dit voorbeeld gebruiken we de updatefunctie om twee woordenboeken samen te voegen.

Python
# Python code to merge dict using update() method def Merge(dict1, dict2): return(dict2.update(dict1)) # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # This returns None print(Merge(dict1, dict2)) # changes made in dict2 print(dict2)>

Uitgang:



None {'c': 4, 'a': 10, 'b': 8, 'd': 6}>

Tijdcomplexiteit: Op)
Hulpruimte: O(1)

Python-uitpakoperator

Het gebruik van ** [dubbele ster] is een snelkoppeling waarmee u meerdere argumenten rechtstreeks aan een functie kunt doorgeven met behulp van een woordenboek. Voor meer informatie zie ** kwargs in Python . Hiermee geven we eerst alle elementen van het eerste woordenboek door aan het derde en vervolgens het tweede woordenboek aan het derde. Dit vervangt de dubbele sleutels van het eerste woordenboek.

Python
# Python code to merge dict using a single  # expression def Merge(dict1, dict2): res = {**dict1, **dict2} return res # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} dict3 = Merge(dict1, dict2) print(dict3)>

Uitvoer
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Tijdcomplexiteit: O(1)
Hulpcomplexiteit: Op)



Python Woordenboeken samenvoegen met | in Python 3.9

In de nieuwste update van Python kunnen we nu | operator om twee woordenboeken samen te voegen. Het is een erg handige methode om woordenboeken samen te voegen. In dit voorbeeld gebruiken we | operator om twee woordenboeken samen te voegen.

Python
# code # Python code to merge dict using a single  # expression  def Merge(dict1, dict2): res = dict1 | dict2 return res # Driver code  dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} dict3 = Merge(dict1, dict2) print(dict3) # This code is contributed by virentanti16>

Uitgang:

{'x': 10, 'a': 6, 'b': 4, 'y': 8}>

Tijdcomplexiteit: O(1)
Hulpruimte: OP)

Gebruik de for lus en sleutels() methode

In dit voorbeeld gebruiken we lus en sleutel() methode om twee woordenboeken samen te voegen.

Python
# code # Python code to merge dictionary def Merge(dict1, dict2): for i in dict2.keys(): dict1[i]=dict2[i] return dict1 # Driver code dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} dict3 = Merge(dict1, dict2) print(dict3) # This code is contributed by Bhavya Koganti>

Uitvoer
{'x': 10, 'y': 8, 'a': 6, 'b': 4}>

Python voegt woordenboeken samen met behulp van de ChainMap-klasse

In dit voorbeeld voegen we woordenboeken in Python samen met behulp van de ingebouwde Ketenkaart klasse uit de collecties module. Met deze klasse kunt u één weergave van meerdere woordenboeken maken, en eventuele updates of wijzigingen aan de ChainMap worden weerspiegeld in de onderliggende woordenboeken.

Python
from collections import ChainMap # create the dictionaries to be merged dict1 = {'a': 1, 'b': 2} dict2 = {'c': 3, 'd': 4} # create a ChainMap with the dictionaries as elements merged_dict = ChainMap(dict1, dict2) # access and modify elements in the merged dictionary print(merged_dict['a']) # prints 1 print(merged_dict['c']) # prints 3 merged_dict['c'] = 5 # updates value in dict2 print(merged_dict['c']) # prints 5 # add a new key-value pair to the merged dictionary merged_dict['e'] = 6 # updates dict1 print(merged_dict['e']) # prints 6>

Uitvoer
1 3 5 6>

Voeg twee woordenboeken samen in Python met behulp van de dict-constructor:

In dit voorbeeld gebruiken we de dict-constructor om twee woordenboeken samen te voegen.

Python
def merge_dictionaries(dict1, dict2): merged_dict = dict1.copy() merged_dict.update(dict2) return merged_dict # Driver code dict1 = {'x': 10, 'y': 8} dict2 = {'a': 6, 'b': 4} print(merge_dictionaries(dict1, dict2))>

Uitvoer
{'x': 10, 'y': 8, 'a': 6, 'b': 4}>

Tijdcomplexiteit: OP)
Hulpruimte: OP)

Python Merge-woordenboeken Met behulp van de constructor dict() en de union-operator (|)

Deze methode gebruikt de constructor dict() met de union-operator (|) om twee woordenboeken samen te voegen. De unie-operator combineert de sleutels en waarden van de twee woordenboeken, en eventuele gemeenschappelijke sleutels in de twee woordenboeken nemen de waarde over van het tweede woordenboek.

Python
# method to merge two dictionaries using the dict() constructor with the union operator (|) def Merge(dict1, dict2): # create a new dictionary by merging the items of the two dictionaries using the union operator (|) merged_dict = dict(dict1.items() | dict2.items()) # return the merged dictionary return merged_dict # Driver code dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # merge the two dictionaries using the Merge() function merged_dict = Merge(dict1, dict2) # print the merged dictionary print(merged_dict)>

Uitvoer
{'d': 6, 'b': 8, 'c': 4, 'a': 10}>

Tijdcomplexiteit: O(n), waarbij n het totale aantal sleutel-waardeparen in beide woordenboeken is.
Hulpruimte: O(n), waarbij n het totale aantal sleutel-waardeparen in beide woordenboeken is

Python Voeg twee woordenboeken samen met reduce():

In dit voorbeeld voegen we twee woordenboeken samen met de functie reduce(). Bij deze methode definiëren we een samenvoegfunctie en nemen vervolgens twee woordenboeken als argumenten en retourneren hun samenvoeging.

Python
from functools import reduce def merge_dictionaries(dict1, dict2): merged_dict = dict1.copy() merged_dict.update(dict2) return merged_dict dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} dict_list = [dict1, dict2] # Put the dictionaries into a list result_dict = reduce(merge_dictionaries, dict_list) print(result_dict) #This code is contributed by Rayudu.>

Uitvoer
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Tijdcomplexiteit :O(n), waarbij n het aantal woordenboeken in de dict_list-lijst is.
Hulpcomplexiteit: O(m), waarbij m het totale aantal sleutel-waardeparen in alle woordenboeken is.