logo

Python | Dviejų žodynų sujungimas

Python žodynas yra duomenų struktūra, kurioje yra elementas raktų ir reikšmių poroje, kurioje raktai naudojami žodyno reikšmėms pasiekti. Python turi keletą integruotų žodynų, pvz., defaultdict. Šiame straipsnyje apžvelgsime įvairius būdus, kaip sujungti du žodynus.

Pavyzdys



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

Dviejų Python žodynų sujungimas

Yra įvairių būdų, kuriais Žodynai galima sujungti naudojant įvairias Python funkcijas ir konstruktorius. Toliau pateikiami keli būdai:

  • Naudojant atnaujinti ()
  • Naudojant išpakavimo operatorius
  • Naudojant sujungimą | operatorius
  • Naudojant kilpas ir raktai() metodas
  • Dikto konstruktoriaus naudojimas
  • dict() konstruktoriaus naudojimas su sąjungos operatoriumi (|)
  • Naudojant sumažinti ()

Python atnaujinimas ()

Naudojant metodą atnaujinti () Python programoje vieną sąrašą galima sujungti į kitą. Tačiau šiame antrasis sąrašas sujungiamas į pirmąjį ir naujas sąrašas nesudaromas. Tai grįžta Nė vienas . Šiame pavyzdyje mes naudojame atnaujinimo funkciją, kad sujungtume du žodynus.

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

Išvestis:



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

Laiko sudėtingumas: O(n)
Pagalbinė erdvė: O(1)

Python išpakavimo operatorius

Naudojant ** [dviguba žvaigždutė] yra spartusis klavišas, leidžiantis perduoti kelis argumentus funkcijai tiesiogiai naudojant žodyną. Daugiau informacijos žr ** kwargs Python . Naudodami tai pirmiausia perduodame visus pirmojo žodyno elementus į trečiąjį, o po to perkeliame antrąjį žodyną į trečiąjį. Tai pakeis pasikartojančius pirmojo žodyno raktus.

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

Išvestis
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Laiko sudėtingumas: O(1)
Pagalbinis sudėtingumas: O(n)



Python Merge žodynai naudojant | Python 3.9 versijoje

Naujausiame python atnaujinime dabar galime naudoti | operatorius sujungti du žodynus. Tai labai patogus būdas sujungti žodynus. Šiame pavyzdyje mes naudojame | operatorius sujungti du žodynus.

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>

Išvestis:

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

Laiko sudėtingumas: O(1)
Pagalbinė erdvė: O(N)

Naudojant for loop ir keys() metodą

Šiame pavyzdyje mes naudojame kilpą ir Raktas() būdas sujungti du žodynus.

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>

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

„Python“ sujungimo žodynai naudojant „ChainMap“ klasę

Šiame pavyzdyje mes sujungiame Python žodynus naudodami integruotą Grandininis žemėlapis klasė iš kolekcijos modulis. Ši klasė leidžia sukurti vieną kelių žodynų rodinį, o bet kokie „ChainMap“ atnaujinimai ar pakeitimai atsispindės pagrindiniuose žodynuose.

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>

Išvestis
1 3 5 6>

Sujunkite du Python žodynus naudodami dikto konstruktorių:

Šiame pavyzdyje mes naudojame dict konstruktorių, kad sujungtume du žodynus.

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

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

Laiko sudėtingumas: O(N)
Pagalbinė erdvė: O(N)

Python Merge Dictionaries naudojant dict() konstruktorių ir union operatorių (|)

Šis metodas naudoja dict() konstruktorių su sąjungos operatoriumi (|), kad sujungtų du žodynus. Sąjungos operatorius sujungia dviejų žodynų raktus ir reikšmes, o bet kokie bendri raktai dviejuose žodynuose paima antrojo žodyno reikšmę.

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

Išvestis
{'d': 6, 'b': 8, 'c': 4, 'a': 10}>

Laiko sudėtingumas: O(n), kur n yra bendras raktų ir reikšmių porų skaičius abiejuose žodynuose.
Pagalbinė erdvė: O(n), kur n yra bendras rakto-reikšmių porų skaičius abiejuose žodynuose

Python Merge Two žodynai naudojant reduction():

Šiame pavyzdyje mes sujungiame du žodynus naudodami redukcijos () funkciją. Šiuo metodu apibrėžiame sujungimo funkciją, tada kaip argumentus paimame du žodynus ir grąžiname jų sujungimą.

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

Išvestis
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Laiko sudėtingumas: O(n), kur n yra žodynų skaičius sąraše dict_list.
Pagalbinis sudėtingumas: O(m), čia m yra bendras raktų ir reikšmių porų skaičius visuose žodynuose.