What are the differences between Python Dictionaries vs Javascript Objects?
From :
In Python, dictionaries are a form of mapping type. They can be initialized using a sequence of comma-separated name: value pairs, enclosed in curly braces. They are accessed using array notation involving square braces. The key can be any hashable, including numbers and strings.
In Javascript, a dictionary is the same as an object. It can be initialized using the same syntax as Python. The key can be a number, a string, or an identifier. Because the dictionary is also an object, the elements can be accessed either using array notation, e.g. b[i], or using property notation, e.g. b.i.
Consider an identifier used in an initializer, such as
b = {i:j}
In Python both i and j are evaluated, but in Javascript, only j is evaluated. In Javascript you also have the privilege of writing in the dot notation, using the identifier i. Hence in Python,
i='k' j=1 b = {i:j} b['k'] # -> 1
In Javascript,
i='k' j=1 b = {i:j} b['i'] // -> 1 b.i // -> 1 // b[i], b['k'] and b.k are not defined
In Javascript, using the identifier in dot notation is completely identical in all cases to using a string that "looks like" the identifier in array notation. Hence, b = { 'i':1 } ; b['i'] // -> 1 b.i // -> 1 When a number or boolean is used in a dictionary, Javascript will access the element using a string representation of the number or boolean. Not so in Python — a string and a number (or boolean) are different hashables.
If you are interested in differences between both languages, then look at ans
Keys in Python dictionaries must be hashable (e.g. a string, a number, a float), while JavaScript does not have such a requirement.
The following is a valid object in JavaScript:
const javascriptObject = { name: 'Alexander Pushkin', year: 1799 }
However, it would be invalid as a Python dictionary:
python_dictionary = {name: 'Alexander Pushkin', year: 1799}
# Results in a NameError: name 'name' is not defined
A quick fix would be to convert the Python dictionary's keys into strings:
my_dictionary = {'name': 'Alexander Pushkin', 'year': 1799}