#python #dictionary
#python #словарь
Вопрос:
У меня есть следующие словари:
x = {"Name": "A"}
y = {"Name": "B"}
z = {"Name": "C"}
all_dictionaries = {}
all_dictionaries.update(x)
all_dictionaries.update(y)
all_dictionaries.update(z)
print(all_dictionaries)
Результат таков
{'Name': 'C'}.
Но я бы хотел, чтобы он печатал следующее (один большой набор, содержащий все объявленные словари):
{{"Name": "A"}, {"Name": "B"}, {"Name": "C"}}
update()
не работает.
Приветствуется любая помощь!
Комментарии:
1. {{«Name»: «A»}, {«Name»: «B»}, {«Name»: «C»}} — это не словарь, это набор
2.
{{"Name": "A"}, {"Name": "B"}, {"Name": "C"}}
это не словарь. Этоset
литерал, который выдаст вам ошибку типа, посколькуdict
не является хэшируемым.
Ответ №1:
Вы можете либо объединить три словаря в набор (или список).
all_dictionaries = [x, y, z]
Это будет выглядеть следующим образом:
[{"Name": "A"}, {"Name": "B"}, {"Name": "C"}]
или вы можете присвоить каждому из словарей ключ.
all_dictionaries = {"x": x, "y": y, "z": z}
который будет выглядеть как: {"x": {"Name": "A"}, "y": {"Name": "B"}, "z": {"Name": "C"}}
Ответ №2:
Обозначение, которое выглядит как словарь без значений, представляет тип данных с именем «set», который не является словарем.
Поскольку набор не может содержать элементы, которые нельзя хэшировать (например, словари), вы должны выбрать другой тип данных для работы.
Вы можете использовать список или кортеж, чтобы сгруппировать множество ключей в один контейнер.
[{"Name": "A"}, {"Name": "B"}, {"Name": "C"}] # List
({"Name": "A"}, {"Name": "B"}, {"Name": "C"}) # Tuple
Ответ №3:
Если вы хотите вложенный словарь:
nested_dict = dict(x={"Name": "A"}, y={"Name": "B"}, z={"Name": "C"})
print(nested_dict)
Вывод:
{'x': {'Name': 'A'}, 'y': {'Name': 'B'}, 'z': {'Name': 'C'}}
Ответ №4:
Словари используют комбинацию ключа и значения для хранения данных, поэтому было бы невозможно сделать что-то подобное.
Вы могли бы либо использовать массив (который на самом деле является списком в python) для хранения нескольких словарей, подобных этому:
x = {"Name": "A"}
y = {"Name": "B"}
z = {"Name": "C"}
array = [x, y, z]
print(array) # [{'Name': 'A'}, {'Name': 'B'}, {'Name': 'C'}]
Или вы могли бы сохранить их в виде кортежа следующим образом:
x = {"Name": "A"}
y = {"Name": "B"}
z = {"Name": "C"}
tuple = (x, y, z)
print(tuple) # ({'Name': 'A'}, {'Name': 'B'}, {'Name': 'C'})
Вы можете свободно выполнять итерации с помощью цикла for, вы можете получить доступ к индексам массива вручную, как вы обычно делаете:
# Usin& the array from the first example
array[0] # {'Name': 'A'}
Имейте в виду, что кортежи неизменяемы, в то время как массивы в python более гибкие.