Возникли проблемы при определении функции, которая облегчит создание словаря

String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true

Убедитесь, что вы понимаете, почему. Это потому, что сравнение == сравнивает только ссылки; equals() метод сопоставляет содержимое по символу.

Когда вы вызываете new для a и b, каждый получает новую ссылку, указывающую на "foo" в таблице строк. Ссылки разные, но контент один и тот же.

1
задан paivaalan 9 March 2019 в 21:29
поделиться

1 ответ

Вы имеете в виду это? Извините, но мой запрос не отвечает на вашу проблему в комментарии, поэтому мне пришлось указать это в качестве возможного решения / объяснения.

>>> d={}
>>> d
{}
>>> d['a'] = {'b' : {'c','d','e'} }
>>> d
{'a': {'b': {'c', 'e', 'd'}}}
>>>
>>> d['a']['b']
{'c', 'e', 'd'}

/// РЕДАКТИРОВАТЬ: Таким образом, когда словарь уже существует, вы можете изменить его содержимое. Однако, если вы хотите добавить новую пару (справа от существующего ключа), вы должны добавить к существующему ключу несуществующий, чуть выше синтаксиса. Я думаю, я объясняю это сложно, извините.

>>> d['a']['b'] = "4"
>>> d
{'a': {'b': '4'}}
>>> d['a']['b'] = ["4","test","hello"]
>>> d
{'a': {'b': ['4', 'test', 'hello']}}
>>> d['a']['b'] = (1,2,3,4)
>>> d
{'a': {'b': (1, 2, 3, 4)}}
>>>

Еще один пример из консоли Python:

>>> test = {}
>>> test['betts']['avg'] = 300
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'betts'
>>> test['betts'] = {}
>>> test['betts']['avg'] = 300
>>> test
{'betts': {'avg': 300}}
>>>
0
ответ дан s3n0 9 March 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: