Python adding items to dict python

Add a new item to a dictionary in Python [duplicate]

@GlabbichRulz: your solution is exactly the elegant approach I was hoping to find here — would you care to turn your comment into an answer so I can upvote it ? would also get me a direct link I can save for future reference.

3 Answers 3

Another possible solution:

which is nice if you want to insert multiple items at once.

Sorry for the thread necro, but is there any reason to prefer one method over the other when adding one item?

@Warrick there’s absolutely no difference except for personal taste. Personally I find the first to be a little more intuitive for just one item.

@user3067923 This is pure conjecture but I imagine that the first one would be marginally faster since it’s mutating the dict in place, whereas the second one has to create a temporary dict, then mutate, then garbage collect the temporary dict. I’d need to benchmark it to say definitively.

As Chris’ answer says, you can use update to add more than one item. An example:

It occurred to me that you may have actually be asking how to implement the + operator for dictionaries, the following seems to work:

>>> class Dict(dict): . def __add__(self, other): . copy = self.copy() . copy.update(other) . return copy . def __radd__(self, other): . copy = other.copy() . copy.update(self) . return copy . >>> default_data = Dict() >>> default_data +  >>> + Dict(test2=2)

Note that this is more overhead then using dictPython adding items to dict python = value or dict.update() , so I would recommend against using this solution unless you intend to create a new dictionary anyway.

Источник

Словари в Python 3 — основные методы и функции

В Python есть много встроенных структур данных, используемых для хранения разных типов информации. Словарь ( dict ) — одна из таких структур, которая хранит данные в формате пар ключ-значение. Получить доступ к значениям словаря Python можно с помощью ключей. Этот материал посвящен подробному обсуждению словаря.

Создание словаря

Для создания словаря в Python необходимо передать последовательность элементов внутри фигурных скобок <> , разделив их запятыми ( , ). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».

Значения могут быть представлять собой любые типы данных и повторяться, но ключи обязаны быть уникальными.

Следующие примеры показывают, как создавать словари Python:

Cловарь, где ключи являются целыми числами:

dict_sample = 1: 'mango', 2: 'pawpaw'> 

Создание словаря с ключами разных типов:

dict_sample = 'fruit': 'mango', 1: [4, 6, 8]> 

Можно также создать словарь, явно вызвав метод dict() :

dict_sample = dict(1:'mango', 2:'pawpaw'>) 

Словарь можно создать с помощью последовательности, как в примере внизу:

dict_sample = dict([(1,'mango'), (2,'pawpaw')]) 

Словари могут быть вложенными. Это значит, что можно создавать словари внутри существующего словаря. Например:

dict_sample =  1: 'student1': 'Nicholas', 'student2': 'John', 'student3': 'Mercy'>, 2: 'course1': 'Computer Science', 'course2': 'Mathematics', 'course3': 'Accounting'> > 

Чтобы вывести содержимое словаря, можно использовать функцию print() и передать название словаря в качестве аргумента. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > print(dict_sample) 

Доступ к элементами

Чтобы получить доступ к элементам словаря, нужно передать ключ в квадратных скобках [] . Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample["model"] print(x) 

Был создан словарь dict_sample . Затем была создана переменная x . Ее значение — это значение ключа [«model»] из словаря.

dict = 'Name': 'Mercy', 'Age': 23, 'Course': 'Accounting'> print("Student Name:", dict['Name']) print("Course:", dict['Course']) print("Age:", dict['Age']) 
Student Name: Mercy Course: Accounting Age: 23 

Объект словаря также имеет функцию get() , которой можно пользоваться для доступа к элементам словаря. Ее нужно добавлять к словаря через точку и затем передавать название ключа как аргумент функции. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.get("model") print(x) 

Теперь вы знаете, как получать доступ к элементам словаря с помощью разных методов. В следующем разделе речь пойдет о добавлении новых элементов в уже существующий словарь.

Добавление элементов

Существует множество способов для добавления новых элементов в словарь. Можно использовать новый ключ и присвоить ему значение. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > dict_sample["Capacity"] = "1800CC" print(dict_sample) 

У нового элемента ключ «Capacity» и значение — «180CC» . Он был добавлен в качестве первого элемента словаря.

Вот другой пример. Для начала нужно создать пустой словарь:

MyDictionary = > print("An Empty Dictionary: ") print(MyDictionary) 

Словарь ничего не возвращает, потому что в нем ничего не хранится. Добавим в нему элементы, один за одним:

MyDictionary[0] = 'Apples' MyDictionary[2] = 'Mangoes' MyDictionary[3] = 20 print("\n3 elements have been added: ") print(MyDictionary) 
3 elements have been added:

Для добавления элементов были отдельно указаны ключи и соответствующие значения. Например:

В этом примере 0 является ключом, а «Apples» — значение.

Можно даже добавить несколько значений для одного ключа. Например:

MyDictionary['Values'] = 1, "Pairs", 4 print("\n3 elements have been added: ") print(MyDictionary) 
3 elements have been added:

В этом примере название ключа — «Value» , а все что после знака = — его значения в формате множества ( Set ).

Помимо добавления новых элементов в словарь, их можно обновлять или изменять. Об этом в следующем разделе.

Обновление элементов

После добавления значения в словарь существующий элемент словаря можно изменить. Для изменения значения используется соответствующий ключ. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > dict_sample["year"] = 2014 print(dict_sample) 

В этом примере видно, что было обновлено значение ключа «year» с 2012 на 2014 .

Удаление элементов

Удалить элемент из словаря можно несколькими способами. В этом разделе они будут рассмотрены по одному:

Ключевое слово del можно использовать для удаления элемента с конкретным ключом. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > del dict_sample["year"] print(dict_sample) 

Вызывается ключевое слово del , а следом за ним — название словаря. В квадратных скобках следом за словарем идет ключ элемента, который требуется удалить. В этом примере это «year» . Запись «year» удаляется из словаря.

Другой способ удалить пару ключ-значение — функция pop() с ключом записи в виде аргумента. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > dict_sample.pop("year") print(dict_sample) 

Функция pop() была вызвана добавлением ее к названию словаря. В этом случае будет удалена запись с ключом «year» .

Функция popitem() удаляет последний элемент в словаре. Для нее не нужно указывать конкретный ключ. Примеры:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > dict_sample.popitem() print(dict_sample) 

Последней записью в словаре была «year» . Она пропала из словаря после вызова функции popitem() .

Что делать, если нужно удалить целый словарь? Это будет сложно и займет много времени, если пользоваться этими методами к каждому ключу. Вместо этого можно использовать ключевое слово del для целого словаря. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > del dict_sample print(dict_sample) 
NameError: name 'dict_sample' is not defined 

Код вернет ошибку, потому что функция print() пытается получить доступ к словарю, который уже не существует.

В определенных случаях может потребоваться удалить все элементы словаря, оставив его пустым. Этого можно добиться, воспользовавшись функцией clear() :

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > dict_sample.clear() print(dict_sample) 

Код вернет пустой словарь, поскольку все его элементы уже удалены.

Другие распространенные методы словарей

Метод len()

С помощью этого метода можно посчитать количество элементов в словаре. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > print(len(dict_sample)) 

В этом словаре три записи, поэтому метод вернет 3.

Метод copy()

Этот метод возвращает копию существующего словаря. Например:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.copy() print(x) 

Была создана копия словаря dict_sample . Она присвоена переменной x . Если вывести x в консоль, то в ней будут те же элементы, что и в словаре dict_sample .

Это удобно, потому что изменения в скопированном словаре не затрагивают оригинальный словарь.

Метод items()

Этот метод возвращает итерируемый объект. Такой объект содержит пары ключ-значение для словаря по аналогии с кортежами в списке. Метод используется, когда нужно перебрать значения словаря.

Этот метод нужно вызывать вместе со словарем, как в примере ниже:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > for k, v in dict_sample.items(): print(k, v) 
('Company', 'Toyota') ('model', 'Premio') ('year', 2012) 

Объект, который возвращает items() , можно использовать, чтобы показать изменения в словаре. Вот как это работает.

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.items() print(x) dict_sample["model"] = "Mark X" print(x) 
dict_items([('Company', 'Toyota'), ('model', 'Premio'), ('year', 2012)]) dict_items([('Company', 'Toyota'), ('model', 'Mark X'), ('year', 2012)]) 

Вывод демонстрирует, что когда вы меняете значение в словаре, объекты элементов также обновляются.

Метод fromkeys()

Этот метод возвращает словарь с указанными ключами и значениями. У него следующий синтаксис:

dictionary.fromkeys(keys, value) 

Значение требуемого параметра keys — итерируемые объекты. Оно отвечает за ключи нового словаря. Значение для параметра value указывать необязательно. Оно отвечает за значение по умолчанию для всех ключей. По умолчанию — None .

Предположим, что нужно создать словарь с тремя ключами и одинаковым значением. Это можно сделать следующим образом:

name = ('John', 'Nicholas', 'Mercy') age = 25 dict_sample = dict.fromkeys(name, age) print(dict_sample) 

В коде вверху определены ключи и одно значение. Метод fromkeys() перебирает ключи и объединяет их со значением для создания заполненного словаря.

Значение для параметра keys является обязательным. В следующем примере показано, что происходит, если параметр values не определен:

name = ('John', 'Nicholas', 'Mercy') dict_sample = dict.fromkeys(name) print(dict_sample) 

Используется значение по умолчанию, None .

Метод setdefault()

Этот метод используется, когда нужно получить значение элемента с конкретным ключом. Если ключ не найден, он будет вставлен в словарь вместе с указанным значением.

У метода следующий синтаксис:

dictionary.setdefault(keyname, value) 

В этой функции параметр keyname является обязательным. Он обозначает название ключа, значение которого нужно вернуть. Параметр value необязательный. Если в словаре уже есть ключ, параметр не будет иметь никакого эффекта. Если ключ не существует, тогда значение функции станет значением ключа. Значение по умолчанию — None .

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.setdefault("color", "Gray") print(x) 

В словаре нет ключа color . Метод setdefault() вставляет этот ключ вместе со значением «Gray» .

Следующий пример показывает, как работает метод, если такой ключ уже есть:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.setdefault("model", "Allion") print(x) 

Значение «Allion» не повлияло на словарь, потому что у ключа уже есть значение.

Метод keys()

Этот метод также возвращает итерируемый объект. Он является списком всех ключей в словаре. Как и метод items() , этот отображает изменения в самом словаре.

Для использования метода нужно всего лишь использовать его с именем словаря, как показано ниже:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > x = dict_sample.keys() print(x) 
dict_keys(['model', 'Company', 'year']) 

Часто этот метод используется, чтобы перебрать все ключи в словаре:

dict_sample =  "Company": "Toyota", "model": "Premio", "year": 2012 > for k in dict_sample.keys(): print(k) 

Выводы

Это все, что нужно знать о словарях Python. Они хранят информацию в парах «ключ: значение». «Ключ» выступает идентификатором объекта, а «значение» — это определенные данные. В Python много функций, которые могут быть использовать для извлечения и обработки данных. В этой статье были рассмотрены способы создания, изменения и удаления словаря, а также самые распространенные методы для работы с этим типом данных.

Источник

Читайте также:  Ssim метрика изображения python
Оцените статью