Как создать словарь в словаре?
Нужен словарь, в который добавится ключ, а его значение будет другой словарь, в который будут добавляться другие ключи со значениями. Пробовал делать такой код в функции:
dict['key'] =
Но в итоге создаётся словарь, в котором значение это словарь, которое не добавляет новых ключей в словаре внутри. Пример: ‘key’:, т.е. заменяет последним значением-словарём, а нужно чтобы добавляло: ‘key’:
Отслеживать
задан 23 сен 2018 в 18:06
131 2 2 золотых знака 3 3 серебряных знака 10 10 бронзовых знаков
Ничего непонятно, в вашем примере dict[‘key’][‘key2’] = ‘value2’ будет всё отлично добавлять
23 сен 2018 в 20:08
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Ключами словаря могут быть только шифруемые объекты: числа, строки, картежи и frozenset. Если индексировать словари другими словарями, то при изменении словаря, который является ключем потеряется возможность извлечь его значение поскольку изменится его хеш. Если в словаре необходимо сохранить другой словарь, то пожалуйста. Они гетерогенны по своей природе
In [1]: d = In [2]: d2 = In [3]: d2.items() Out[3]: dict_items([('dict', )])
Или тоже самое в форме литерала
In [1]: d = > In [2]: d.items() Out[2]: dict_items([('spam', )])
Отслеживать
ответ дан 23 сен 2018 в 21:25
user268178 user268178
Только не шифруемые, а хешируемые )
24 сен 2018 в 9:24
Примеры наполнения словаря, в котором значения являются также словарями:
t = print(t) t.update(, 3: >) print(t) t.update([[4,],[5, ]]) print(t) t.setdefault(6) print(t) t.setdefault(7, ) print(t) # # , 3: > # , 3: , 4: , 5: > # , 3: , 4: , 5: , 6: None> # , 3: , 4: , 5: , 6: None, 7: >
Обращение к словарю-значению осуществляется через двойное указание ключей:
w = , "2": > print(w["1"]["11"])
Обратиться к словарю-значению без «словарного» ключа не получиться:
print(w["11"]) KeyError: "11"
Если вам необходимо обращаться именно к элементам словарей внутри, можно пересобрать словарь и обращаться прямо:
new_w = <> for s in w.values(): new_w.update(**s) print(new_w) print(new_w["22"]) # # 22
Как добавить элемент в значение словаря Python?
Всё довольно просто. Тебе нужно вместо одного значения по ключу хранить список. В этом случае есть две ситуации. Когда мы должны только создать этот список и, когда можем уже добавить в него значение.
Выглядит это следующим образом:
if dict.get(key, False) is False: # если в словаре нет такого ключа dict[key] = [value] # добавляем его и помещает туда список с одним значением else: # если такой ключ уже есть dict[key].uppend(value) # добавляем значение в конец списка
.get — метод словаря, который возвращает значение по ключу, а если его нет, то False (по умолчанию None и это можно даже не указывать, здесь привёл просто для наглядности).
Эту конструкцию можно поместить в цикл, где как раз будут перебираться все значения.
Отслеживать
ответ дан 29 июн 2022 в 13:16
26 5 5 бронзовых знаков
Выше чел написал:
if dict.get(key, False) is False: # если в словаре нет такого ключа dict[key] = [value] # добавляем его и помещает туда список с одним значением else: # если такой ключ уже есть dict[key].uppend(value) # добавляем значение в конец списка
Я проверил, работает код, если внести некоторые правки. Зарегистрировался специально, чтобы об этом написать, но репутации не хватает для того, чтобы прокомментировать его ответ, поэтому пишу свой ответ.
Во-первых, key и value должны быть строками, то есть, в кавычках. Во-вторых, команда, добавляющая элемент в список, append, а не uppend.
dict = <> if dict.get('key', False) is False: dict['key'] = ['value'] else: dict['key'].append('value') print(dict) # if dict.get('key', False) is False: dict['key'] = ['value'] else: dict['key'].append('value2') print(dict) #
Но можно элегантнее проверять наличие ключа в словаре, поэтому я бы предложил такой вариант:
dict = <> if 'key' not in dict: # если в словаре нет такого ключа dict['key'] = ['value'] # добавляем его и помещает туда список с одним значением else: # если такой ключ уже есть dict['key'].append('value') # добавляем значение в конец списка print(dict) # if 'key' not in dict: # если в словаре нет такого ключа dict['key'] = ['value'] # добавляем его и помещает туда список с одним значением else: # если такой ключ уже есть dict['key'].append('value2') # добавляем значение в конец списка print(dict) #
Добавление/изменение значения словаря по ключу key в Python
Операция d[key] = value добавит в словарь dict новый элемент — пару ключ-значение.
Если в словаре существует ключ key то эта операция присвоит ключу key новое значение value .
Примеры добавления ключей в словарь:
# создадим пустой словарь `x` >>> x = <> # добавим в словарь `x` ключ 'one' со значением 1 >>> x['one'] = 1 # # добавим еще несколько ключей со значениями >>> x['two'] = 2 >>> x['three'] = 3 >>> x['four'] = 4 # смотрим что получилось >>> x #
Примеры изменения значений ключей в словаре:
# изменим значение с ключом `two` >>> x['two'] = 20 >>> x # # добавим в словарь `x` ключ 'ten' со значением 10 >>> x['ten'] = 10 # # изменим значение с ключом `one` >>> x['one'] = 0 #
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
ХОЧУ ПОМОЧЬ
ПРОЕКТУ
Rukovodstvo
статьи и идеи для разработчиков программного обеспечения и веб-разработчиков.
Python: как добавить ключи в словарь
Введение Словарь в Python — это набор элементов, в которых данные хранятся в виде пар ключ-значение. Мы можем получить доступ к элементам словаря и управлять ими на основе их ключа. Словари изменяемы и позволяют добавлять в них новые элементы. Самый быстрый способ добавить отдельный элемент в словарь — использовать ссылку на индекс словаря с новым ключом и присвоить значение. Например, мы добавляем новую пару "ключ-значение", например: snacks ['chocolate'] = 5 Python позволяет добавлять несколько элементов в словари как w
Время чтения: 4 мин.
Вступление
Словарь в Python — это набор элементов, в которых данные хранятся в виде пар ключ-значение. Мы можем получить доступ к элементам словаря и управлять ими на основе их ключа. Словари изменяемы и позволяют добавлять в них новые элементы.
Самый быстрый способ добавить отдельный элемент в словарь — использовать ссылку на индекс словаря с новым ключом и присвоить значение. Например, мы добавляем новую пару ключ-значение следующим образом:
snacks['chocolate'] = 5
Python также позволяет добавлять несколько элементов в словари. В этом руководстве мы рассмотрим, как добавлять ключи в словарь в Python .
Добавить ключ в словарь Python
Есть несколько способов добавить новую пару «ключ-значение» в существующий словарь. Давайте рассмотрим несколько распространенных способов сделать это.
Добавить ключ со значением
Мы можем добавить новый ключ в словарь, присвоив ему значение. Если ключ уже присутствует, он перезаписывает значение, на которое указывает. Ключ должен быть записан в индексной нотации к словарю следующим образом:
my_dictionary[new_key] = new_value
Эта пара «ключ-значение» будет добавлена в словарь. Если вы используете Python 3.6 или новее, он будет добавлен как последний элемент словаря.
Давайте сделаем словарь, а затем добавим новую пару ключ-значение с помощью этого подхода:
squares = squares[4] = 16 # Adding new key-value pair print(squares)
Добавить ключ в словарь без значения
Если вы просто хотите добавить ключ без значения, вы можете просто поставить None вместо значения с помощью любого из методов, описанных в этой статье:
squares = squares['x'] = None # Adding new key without value print(squares)
Добавить несколько пар ключ-значение с помощью update ()
В Python мы можем добавить несколько пар ключ-значение к существующему словарю. Это достигается с помощью метода update() Этот метод принимает аргумент типа dict или любую итерацию, имеющую длину два, например ((key1, value1),) , и обновляет словарь новыми парами ключ-значение.
Если ключ уже присутствует в словаре, он перезаписывается новым значением.
Ключи также могут быть переданы этому методу в качестве аргументов ключевого слова с соответствующими значениями, например dictionary.update(new_key=new_value) .
Примечание. Это, пожалуй, самый популярный метод добавления новых ключей и значений в словарь.
Давайте воспользуемся update() чтобы добавить в словарь несколько пар ключ-значение:
rainbow = # Update by passing dictionary new_key_values_dict = rainbow.update(new_key_values_dict) print("update by passing dictionary") print(rainbow) # Update by passing iterables new_key_values_itr = (('green',4), ('blue',5)) rainbow.update(new_key_values_itr) print("update by passing iterables") print(rainbow) # Update using keyword arguments rainbow.update(indigo=6, violet=7) print("update using keyword arguments") print(rainbow)
Запуск этого кода приведет к следующему результату:
update by passing dictionary update by passing iterables update using keyword arguments
Использование оператора слияния (Python 3.9+)
Начиная с версии Python 3.9, во встроенный класс dict были добавлены операторы | ) и обновления ( |=
Это очень удобные методы для добавления в словарь нескольких пар ключ-значение. Оператор слияния ( | ) создает новый словарь с ключами и значениями обоих указанных словарей. Затем мы можем присвоить этот результат новому словарю.
В то время как |= ) добавляет пары ключ-значение из второго словаря в первый словарь. Таким образом, существующий словарь обновляется несколькими парами ключ-значение из другого словаря.
Вот пример использования | ) и Update ( |= ) для добавления новых ключей в словарь:
colors_set1 = colors_set2 = # Merge operator rainbow = colors_set1 | colors_set2 print("using merge:", rainbow) # Update operator colors_set1 |= colors_set2 print("using update:", colors_set1)
Этот код создаст следующий вывод в интерпретаторе Python (3.9+):
using merge: using update:
Заключение
В этом уроке мы узнали, как добавить новый ключ в словарь. Сначала мы добавили пару «ключ-значение», используя индексную нотацию — мы добавили ключ в словарь, присвоив ему значение. Затем мы рассмотрели метод update() для добавления в словарь нескольких пар ключ-значение. Мы также использовали метод update() с параметрами типа словаря, кортежа и аргументов ключевого слова. Наконец, мы исследовали операторы слияния и обновления, доступные начиная с версии Python 3.9.
update() оказался наиболее популярным способом добавления новых ключей в существующий словарь.
Licensed under CC BY-NC-SA 4.0
