Programmā Python vārdnīca ir datu struktūra, kas satur elementu atslēgu un vērtību pārī, kurā atslēgas tiek izmantotas, lai piekļūtu vārdnīcas vērtībām. Python ir dažas iebūvētas vārdnīcas, piemēram, defaultdict. Šajā rakstā mēs redzēsim dažādus veidus, kā apvienot divas vārdnīcas.
Piemērs
Input: dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} Output: {'a': 10, 'b': 8, 'd': 6, 'c': 4}>Divu vārdnīcu sapludināšana Python
Ir dažādi veidi, kā Vārdnīcas var apvienot, izmantojot dažādas Python funkcijas un konstruktorus. Tālāk ir norādīti daži šādi veidi:
- Izmantojot Atjaunināt()
- Izmantojot izpakošanas operators
- Izmantojot sapludināšanu | operators
- Izmantojot cilpas un atslēgas () metodi
- Izmantojot diktātu konstruktoru
- Konstruktora dict() izmantošana ar savienības operatoru (|)
- Izmantojot samazināt ()
Python atjauninājums ()
Izmantojot metodi Atjaunināt() Python vienu sarakstu var sapludināt citā. Bet šajā gadījumā otrais saraksts tiek sapludināts pirmajā sarakstā un jauns saraksts netiek izveidots. Tas atgriežas Nav . Šajā piemērā mēs izmantojam atjaunināšanas funkciju, lai apvienotu divas vārdnīcas.
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)> Izvade:
None {'c': 4, 'a': 10, 'b': 8, 'd': 6}> Laika sarežģītība: O(n)
Palīgtelpa: O(1)
Python izpakošanas operators
Izmantojot ** [dubultzvaigzne], ir saīsne, kas ļauj funkcijai nodot vairākus argumentus tieši, izmantojot vārdnīcu. Papildinformāciju skatiet **kwargs Python valodā . Izmantojot šo, mēs vispirms ievietojam visus pirmās vārdnīcas elementus trešajā un pēc tam nododam otro vārdnīcu trešajā. Tas aizstās pirmās vārdnīcas dublētās atslēgas.
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)> Izvade
{'a': 10, 'b': 8, 'd': 6, 'c': 4}> Laika sarežģītība: O(1)
Papildu sarežģītība: O(n)
Python sapludināšanas vārdnīcas, izmantojot | Python versijā 3.9
Jaunākajā python atjauninājumā tagad mēs varam izmantot | operators, lai apvienotu divas vārdnīcas. Tā ir ļoti ērta vārdnīcu sapludināšanas metode. Šajā piemērā mēs izmantojam | operators, lai apvienotu divas vārdnīcas.
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> Izvade:
{'x': 10, 'a': 6, 'b': 4, 'y': 8}> Laika sarežģītība: O(1)
Palīgtelpa: O(N)
Izmantojot for loop un keys() metodi
Šajā piemērā mēs izmantojam cilpu un atslēga () metode divu vārdnīcu sapludināšanai.
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> Izvade
{'x': 10, 'y': 8, 'a': 6, 'b': 4}> Python sapludināšanas vārdnīcas, izmantojot ChainMap klasi
Šajā piemērā mēs sapludinām vārdnīcas Python, izmantojot iebūvēto Ķēdes karte klase no kolekcijas modulis. Šī klase ļauj izveidot vienu skatu no vairākām vārdnīcām, un visi ChainMap atjauninājumi vai izmaiņas tiks atspoguļotas pamatā esošajās vārdnīcās.
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> Izvade
1 3 5 6>
Apvienojiet divas vārdnīcas Python, izmantojot diktātu konstruktoru:
Šajā piemērā mēs izmantojam dict konstruktoru, lai apvienotu divas vārdnīcas.
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))> Izvade
{'x': 10, 'y': 8, 'a': 6, 'b': 4}> Laika sarežģītība: O(N)
Palīgtelpa: O(N)
Python sapludināšanas vārdnīcas, izmantojot dict() konstruktoru un savienības operatoru (|)
Šī metode izmanto dict() konstruktoru ar savienības operatoru (|), lai sapludinātu divas vārdnīcas. Apvienības operators apvieno abu vārdnīcu atslēgas un vērtības, un jebkuras kopīgas atslēgas abās vārdnīcās ņem vērtību no otrās vārdnīcas.
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)> Izvade
{'d': 6, 'b': 8, 'c': 4, 'a': 10}> Laika sarežģītība: O(n), kur n ir kopējais atslēgu un vērtību pāru skaits abās vārdnīcās.
Palīgtelpa: O(n), kur n ir kopējais atslēgu un vērtību pāru skaits abās vārdnīcās
shloka mehta
Python sapludināt divas vārdnīcas, izmantojot redukcijas ():
Šajā piemērā mēs apvienojam divas vārdnīcas, izmantojot funkciju samazināt (). Šajā metodē mēs definējam sapludināšanas funkciju, pēc tam kā argumentus ņemam divas vārdnīcas un atgriež to sapludināšanu.
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.> Izvade
{'a': 10, 'b': 8, 'd': 6, 'c': 4}> Laika sarežģītība: O(n), kur n ir vārdnīcu skaits sarakstā dict_list.
Papildu sarežģītība: O(m), kur m ir kopējais atslēgu un vērtību pāru skaits visās vārdnīcās.