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.