Почему это работает для моего фрагмента словаря? - PullRequest
1 голос
/ 17 июня 2020
{1:2,3:{4,5}}

Почему это работает? Я думал, что допустил опечатку, но результат верен!

Является ли {4,5} вложенным словарем или чем-то вроде списка?

Ответы [ 4 ]

2 голосов
/ 17 июня 2020

Да, у вас есть словарь, который содержит набор. Словарь - это парные объекты, значения которых могут быть любыми, целыми числами, списками, наборами, фреймами данных, словарями и т. Д. c ...

В этом конкретном случае мы можем убедиться в этом, выполнив несколько отпечатков с type:

A = {1:2,3:{4,5}}
print(A, " is of type " , type(A))
print(A[1], "is of type " , type(A[1]))
print(A[3], "is of type " , type(A[3]))

Что правильно выводит:

{1: 2, 3: {4, 5}}  is of type  <class 'dict'>
2 is of type  <class 'int'>
{4, 5} is of type  <class 'set'>

Это будет выводиться, если A = {1:2,3:{4,4}}

{4} is of type  <class 'set'>

Потому что set содержит уникальные элементы , следовательно, повторы исключаются. Здесь вы можете найти дополнительную информацию о наборах

2 голосов
/ 17 июня 2020

Это set

>>> {4, 5}
{4, 5}
>>> s = {4, 5}
>>> s
{4, 5}
>>> type(s)
<class 'set'>

Вы можете сохранить любой действительный объект python как значение в словаре. Следовательно, {1:2,3:{4,5}} - допустимый словарь.

1 голос
/ 17 июня 2020

{4, 5} - это набор . Это отсортированный контейнер в виде списка с уникальными элементами, поэтому он похож на словарь.

1 голос
/ 17 июня 2020

Это набор . Наборы ведут себя как словари без ключей (или без значений). В качестве значения словаря можно указать все, что угодно (включая другой словарь). Однако ключи словаря должны быть хешируемыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...