Подтвердить что ты не робот

Чем отличаются словари Python от объектов Javascript?

Я новичок в python, и я читал о словарях. И из моего предыдущего опыта работы с такими языками, как javascript, они казались мне объектами. Словари могут хранить списки и делиться многими сходствами с объектами в javascript.

ex python code:

menu = {}
menu['Chicken Alfredo'] = 14.50
menu['Italian Pasta'] = 15.89
menu['Shrimp Soup'] = 12.43
menu['Persian Rice'] = 21.99

ex javascript code:

var menu = new Object();
menu['Chicken Alfredo'] = 14.50;
menu['Italian Pasta'] = 15.89;
menu['Shrimp Soup'] = 12.43;
menu['Persian Rice'] = 21.99;

Какая разница здесь, они оба выполняют одну и ту же работу, но существуют разные понятия?

4b9b3361

Ответ 1

От :

В Python словари являются формой отображения типа. Их можно инициализировать, используя последовательность пар имя-значение, разделенных запятыми, заключенных в фигурные скобки. Доступ к ним осуществляется с использованием записи массива с использованием квадратных скобок. Ключ может быть любым хэшируемым, включая цифры и строки.

В Javascript словарь - это то же самое, что и объект. Он может быть инициализирован с использованием того же синтаксиса, что и Python. Ключ может быть числом, строкой или идентификатором. Поскольку словарь также является объектом, к элементам можно получить доступ либо с использованием нотации массива, например, b [i], либо с помощью нотации свойства, например,

Рассмотрим идентификатор, используемый в инициализаторе, такой как

 b = {i:j} 

В Python оцениваются как i, так и j, но в Javascript оценивается только j. В Javascript у вас также есть привилегия писать в точечной нотации, используя идентификатор i. Следовательно, в Python,

 i='k'
 j=1
 b = {i:j}
 b['k'] # -> 1 

В Javascript,

 i='k'
 j=1
 b = {i:j}
 b['i'] // -> 1
 b.i // -> 1
 // b[i], b['k'] and b.k are not defined 

В Javascript использование идентификатора в точечной нотации во всех случаях полностью идентично использованию строки, которая "похожа" на идентификатор в нотации массива. Следовательно, b = {'i': 1}; b ['i']/ / -> 1 bi/ / -> 1 Когда в словаре используется число или логическое значение, Javascript будет обращаться к элементу, используя строковое представление числа или логическое значение. В Python это не так - строка и число (или логическое значение) - это разные хэши.

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

Ответ 2

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

  • Ниже приведен допустимый объект в JavaScript:

    const javascriptObject = { name: 'Alexander Pushkin', year: 1799 }
    

    Тем не менее, он был бы недействительным как словарь Python:

    python_dictionary = {name: 'Alexander Pushkin', year: 1799}
    
    # Traceback (most recent call last):
    # NameError: name 'name' is not defined
    

    Быстрое решение проблемы - преобразовать ключи словаря Python в строки:

    my_dictionary = {'name': 'Alexander Pushkin', 'year': 1799}
    
  • С помощью диктовок вы можете создавать объекты в JavaScript. Они не только хранят данные, но также имеют много других мощных функций, таких как конструкторы.