Инициализация словаря Python: фигурные скобки против конструктора dict() и других методов

В Python вы можете инициализировать словарь, используя либо литералы фигурных скобок {}, либо конструктор dict(). Оба метода широко используются, и выбор между ними часто зависит от личных предпочтений или конкретных требований кода. Приведу примеры различных методов инициализации словаря:

  1. Литералы фигурных скобок:

    # Empty dictionary
    my_dict = {}
    # Dictionary with initial key-value pairs
    my_dict = {'key1': 'value1', 'key2': 'value2'}
  2. Конструктор dict():

    # Empty dictionary
    my_dict = dict()
    # Dictionary with initial key-value pairs
    my_dict = dict(key1='value1', key2='value2')
    # Dictionary from a list of tuples
    my_dict = dict([('key1', 'value1'), ('key2', 'value2')])
  3. Понимание словаря:

    # Creating a dictionary using a comprehension
    my_dict = {key: value for key, value in some_iterable}
  4. Использование Zip:

    # Creating a dictionary from two lists using zip
    keys = ['key1', 'key2']
    values = ['value1', 'value2']
    my_dict = dict(zip(keys, values))
  5. Использование метода fromkeys():

    # Creating a dictionary with default values for specified keys
    keys = ['key1', 'key2']
    default_value = 'default'
    my_dict = dict.fromkeys(keys, default_value)
  6. Использование изменяемого сопоставления:

    # Creating a dictionary by inheriting from MutableMapping
    from collections.abc import MutableMapping
    class MyDict(MutableMapping):
       def __init__(self, *args, kwargs):
           self.store = dict()
           self.update(dict(*args, kwargs))
       def __getitem__(self, key):
           return self.store[key]
       def __setitem__(self, key, value):
           self.store[key] = value
       def __delitem__(self, key):
           del self.store[key]
       def __iter__(self):
           return iter(self.store)
       def __len__(self):
           return len(self.store)
    my_dict = MyDict(key1='value1', key2='value2')