web-dev-qa-db-fra.com

Quelles sont les différences entre Python Dictionaries vs Javascript Objects?

Je suis nouveau sur python et je lisais sur les dictionnaires. Et d'après mon expérience précédente avec des langages comme javascript, ils semblaient être des objets pour moi. Les dictionnaires peuvent stocker des listes et partager de nombreuses similitudes avec des objets en javascript .

ex python:

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

ex code javascript:

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

Quelle est la différence ici, ils font tous les deux le même travail, mais il y a des concepts différents?

39
Abdullahi Farah

De:

En Python, les dictionnaires sont une forme de type de mappage. Ils peuvent être initialisés à l'aide d'une séquence de paires nom/valeur séparées par des virgules, entourées d'accolades. Ils sont accessibles en utilisant la notation de tableau impliquant des accolades carrées. La clé peut être n'importe laquelle, y compris les chiffres et les chaînes.

En Javascript, un dictionnaire est identique à un objet. Il peut être initialisé en utilisant la même syntaxe que Python. La clé peut être un nombre, une chaîne ou un identifiant. Parce que le dictionnaire est également un objet, les éléments sont accessibles soit en utilisant la notation de tableau, par ex. b [i], ou en utilisant la notation des propriétés, par ex. bi.

Considérons un identifiant utilisé dans un initialiseur, tel que

 b = {i:j} 

En Python i et j sont évalués, mais en Javascript, seul j est évalué. En Javascript, vous avez également le privilège d'écrire en notation par points, en utilisant l'identifiant i. Par conséquent, en Python,

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

En Javascript,

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

En Javascript, l'utilisation de l'identifiant en notation par points est complètement identique dans tous les cas à l'utilisation d'une chaîne qui "ressemble" à l'identifiant en notation matricielle. Par conséquent, b = {'i': 1}; b ['i'] // -> 1 b.i // -> 1 Lorsqu'un nombre ou un booléen est utilisé dans un dictionnaire, Javascript accède à l'élément en utilisant une représentation sous forme de chaîne du nombre ou du booléen. Ce n'est pas le cas dans Python - une chaîne et un nombre (ou booléen) sont des haschables différents.

Si vous êtes intéressé par les différences entre les deux langues, alors regardez ans

45
a.m.
  • Les clés dans Python doivent être quelque chose de hachable (par exemple, une chaîne, un nombre, un flottant, etc.).

  • Voici un objet valide en JavaScript:

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

    Cependant, il serait invalide en tant que dictionnaire Python:

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

    Une solution rapide serait de convertir les clés du dictionnaire Python en chaînes:

    my_dictionary = {'name': 'Alexander Pushkin', 'year': 1799}
    
  • Via des dictés, vous pouvez créer des objets en JavaScript. Ils contiennent non seulement des données, mais ont également de nombreuses autres fonctionnalités puissantes telles que les constructeurs.

7
techkuz