logo

Python | Sloučení dvou slovníků

V Pythonu je slovník datová struktura, která obsahuje prvek v páru klíč-hodnota, ve kterém se klíče používají pro přístup k hodnotám ve slovníku. Krajta má některé vestavěné slovníky jako defaultdict. V tomto článku uvidíme různé způsoby, jak sloučit dva slovníky.

Příklad



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

Sloučení dvou slovníků v Pythonu

Existují různé způsoby, jak Slovníky lze sloučit pomocí různých funkcí a konstruktorů v Pythonu. Níže jsou uvedeny některé následující způsoby:

  • Použitím Aktualizace()
  • Použitím operátor vybalování
  • Pomocí sloučení | operátor
  • Pomocí smyček a klíče() metoda
  • Pomocí konstruktoru dict
  • Použití konstruktoru dict() s operátorem unie (|)
  • Použitím snížit()

Aktualizace Pythonu()

Pomocí metody Aktualizace() v Pythonu lze jeden seznam sloučit do druhého. Ale v tomto se druhý seznam sloučí s prvním seznamem a žádný nový seznam se nevytvoří. Vrací se Žádný . V tomto příkladu používáme funkci aktualizace ke sloučení dvou slovníků.

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

Výstup:



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

Časová složitost: Na)
Pomocný prostor: O(1)

Operátor rozbalování Pythonu

Použití ** [dvojitá hvězdička] je zkratka, která umožňuje předat funkci více argumentů přímo pomocí slovníku. Další informace viz **kwargs v Pythonu . Pomocí toho nejprve předáme všechny prvky prvního slovníku do třetího a poté předáme druhý slovník do třetího. To nahradí duplicitní klíče prvního slovníku.

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

Výstup
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Časová složitost: O(1)
Pomocná složitost: Na)



Sloučit slovníky Pythonu pomocí | v Pythonu 3.9

V nejnovější aktualizaci pythonu nyní můžeme použít | operátor pro sloučení dvou slovníků. Je to velmi pohodlný způsob slučování slovníků. V tomto příkladu používáme | operátor pro sloučení dvou slovníků.

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

Výstup:

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

Časová složitost: O(1)
Pomocný prostor: NA)

Použití cyklu for a metody keys().

V tomto příkladu používáme smyčku a klíč() metoda sloučení dvou slovníků.

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

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

Sloučit slovníky Pythonu pomocí třídy ChainMap

V tomto příkladu slučujeme slovníky v Pythonu pomocí vestavěného Řetězová mapa třídy z sbírky modul. Tato třída vám umožňuje vytvořit jeden pohled na více slovníků a veškeré aktualizace nebo změny provedené v ChainMap se projeví v podkladových slovnících.

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

Výstup
1 3 5 6>

Sloučit dva slovníky v Pythonu pomocí konstruktoru dict:

V tomto příkladu používáme konstruktor dict ke sloučení dvou slovníků.

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

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

Časová náročnost: NA)
Pomocný prostor: NA)

Slučovací slovníky Pythonu pomocí konstruktoru dict() a sjednocovacího operátoru (|)

Tato metoda používá konstruktor dict() s operátorem unie (|) ke sloučení dvou slovníků. Sjednocovací operátor kombinuje klíče a hodnoty dvou slovníků a všechny společné klíče v těchto dvou slovnících přebírají hodnotu z druhého slovníku.

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

Výstup
{'d': 6, 'b': 8, 'c': 4, 'a': 10}>

Časová složitost: O(n), kde n je celkový počet párů klíč–hodnota v obou slovnících.
Pomocný prostor: O(n), kde n je celkový počet párů klíč–hodnota v obou slovnících

Sloučit dva slovníky v Pythonu pomocí reduction():

V tomto příkladu slučujeme dva slovníky pomocí funkce reduction(). V této metodě definujeme funkci sloučení, poté vezme dva slovníky jako argumenty a vrátí jejich sloučení.

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

Výstup
{'a': 10, 'b': 8, 'd': 6, 'c': 4}>

Časová složitost :O(n), kde n je počet slovníků v seznamu dict_list.
Pomocná složitost : O(m), kde m je celkový počet párů klíč–hodnota ve všech slovnících.