logo

Python | Sammanfoga två ordböcker

I Python är en ordbok en datastruktur som innehåller elementet i nyckel-värdeparet där nycklar används för att komma åt värdena i ordboken. Pytonorm har några inbyggda ordböcker som defaultdict. I den här artikeln kommer vi att se olika sätt att slå samman två ordböcker.

Exempel



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

Sammanfoga två ordböcker i Python

Det finns olika sätt på vilket Ordböcker kan slås samman genom att använda olika funktioner och konstruktorer i Python. Nedan finns några följande sätt:

  • Använder sig av uppdatering()
  • Använder sig av uppackningsoperatör
  • Använder sammanfogning | operatör
  • Använda slingor och nycklar() metod
  • Använder dict constructor
  • Använda dict()-konstruktorn med unionsoperatorn (|)
  • Använder sig av minska()

Python update()

Genom att använda metoden uppdatering() i Python kan en lista slås samman till en annan. Men i denna slås den andra listan samman till den första listan och ingen ny lista skapas. Den återkommer Ingen . I det här exemplet använder vi uppdateringsfunktionen för att slå samman två ordböcker.

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

Produktion:



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

Tidskomplexitet: På)
Extra utrymme: O(1)

Python uppackningsoperatör

Att använda ** [dubbelstjärna] är en genväg som låter dig skicka flera argument till en funktion direkt med hjälp av en ordbok. För mer information se **kwargs i Python . Genom att använda detta överför vi först alla element i den första ordboken till den tredje och skickar sedan den andra ordboken till den tredje. Detta kommer att ersätta dubblettnycklarna i den första ordboken.

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

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

Tidskomplexitet: O(1)
Hjälpkomplexitet: På)



Python sammanfoga ordböcker med | i Python 3.9

I den senaste uppdateringen av python nu kan vi använda | operatorn för att slå samman två ordböcker. Det är en mycket bekväm metod att slå samman ordböcker. I det här exemplet använder vi | operatorn för att slå samman två ordböcker.

Pytonorm
# 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>

Produktion:

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

Tidskomplexitet: O(1)
Extra utrymme: PÅ)

Använder metoden for loop och keys().

I det här exemplet använder vi loop och nyckel() metod för att slå samman två ordböcker.

Pytonorm
# 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>

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

Python Merge Dictionaries med ChainMap Class

I det här exemplet slår vi samman ordböcker i Python genom att använda den inbyggda Kedjekarta klass från samlingar modul. Den här klassen låter dig skapa en enda vy av flera ordböcker, och alla uppdateringar eller ändringar som görs i ChainMap kommer att återspeglas i de underliggande ordböckerna.

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

Produktion
1 3 5 6>

Slå samman två ordböcker i Python med hjälp av dict-konstruktorn:

I det här exemplet använder vi dict constructor för att slå samman två ordböcker.

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

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

Tidskomplexitet: PÅ)
Hjälputrymme: PÅ)

Python Merge Dictionaries med dict() konstruktor och unionsoperator (|)

Denna metod använder dict()-konstruktorn med unionsoperatorn (|) för att slå samman två ordböcker. Fackföreningsoperatören kombinerar nycklar och värden för de två ordböckerna, och alla gemensamma nycklar i de två ordböckerna tar värdet från den andra ordboken.

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

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

Tidskomplexitet: O(n), där n är det totala antalet nyckel-värdepar i båda ordböckerna.
Hjälputrymme: O(n), där n är det totala antalet nyckel-värdepar i båda ordböckerna

Python slå samman två ordböcker med reducer():

I det här exemplet slår vi samman två ordböcker med reducering()-funktionen. I den här metoden definierar vi en sammanfogningsfunktion och tar sedan två ordböcker som argument och returnerar deras sammanfogning.

Pytonorm
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.>

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

Tidskomplexitet :O(n), där n är antalet ordböcker i dict_list-listan.
Hjälpkomplexitet: O(m), där m är det totala antalet nyckel-värdepar i alla ordböcker.