2014-01-08 13 views
27

Ich bin neu in Python und ich lese über Wörterbücher. Und von meinen früheren Erfahrungen mit Sprachen wie Javascript waren sie für mich wie Objekte. Wörterbücher können Listen speichern und viele Ähnlichkeiten mit Objekten in Javascript teilen.Python Wörterbücher vs Javascript Objekte

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; 

Was ist der Unterschied hier, sie beide die gleiche Arbeit tun, aber es unterschiedliche Konzepte?

+1

Sie wissen, dass Sie über zwei verschiedene Sprachen sprechen, nicht wahr? Welche Art von Unterschieden suchen Sie? – thefourtheye

+3

der Python-Code ist auch js ... – dandavis

+3

Javascript erlaubt Dinge wie 'menu.chicken' als Alias ​​für' menu ['chicken'] '(IIRC), aber Python erlaubt das nicht. Ein Python-Dictionary löst außerdem einen 'KeyError' aus, wenn ein angefordertes Element nicht vorhanden ist. Javascript wird 'undefined' (wieder, IIRC) zurückgeben ... – mgilson

Antwort

32

From :

In Python, Wörterbücher sind eine Form der Mapping-Typ. Sie können initialisiert werden, indem Sie eine Sequenz von durch Komma getrennten Namen verwenden: Wertpaare, eingeschlossen in geschweiften Klammern. Der Zugriff erfolgt über die Array-Notation mit quadratischen Klammern. Der Schlüssel kann beliebig sein, einschließlich Zahlen und Strings.

In Javascript ist ein Wörterbuch das gleiche wie ein Objekt. Es kann mit der gleichen Syntax wie Python initialisiert werden. Der Schlüssel kann eine Zahl, eine Zeichenfolge oder eine Kennung sein. Da das Wörterbuch auch ein Objekt ist, können die Elemente unter Verwendung der Array-Notation, z. b [i], oder unter Verwendung der Eigenschaftsnotation, z.B. Bi.

Betrachten Sie eine Kennung in einem Initialisierer verwendet werden, wie

b = {i:j} 

In Python sowohl i und j ausgewertet werden, aber in Javascript wird nur j ausgewertet. In Javascript haben Sie auch das Recht in der Punktnotation zu schreiben, indem Sie den Bezeichner i verwenden. daher 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, die Kennung in Punktnotation verwendet, ist völlig identisch in allen Fällen eine Zeichenfolge mit, dass die Kennung "aussieht" in Array-Notation. Daher b = {'i': 1}; b ['i'] // -> 1 b.i // -> 1 Wenn eine Zahl oder ein Boolescher Wert in einem Wörterbuch verwendet wird, greift Javascript auf das Element unter Verwendung einer Zeichenfolgendarstellung von der Zahl oder dem Booleschen Wert zu. Nicht so in Python - ein String und eine Zahl (oder boolean) sind verschiedene Hashes.

Wenn Sie Unterschiede zwischen den beiden Sprachen interessiert sind, dann schauen Sie auf ans

+0

Der '->' Operator existiert nicht in Python (zweiter Block des Codes) – Jacquot

+0

@Jacquot er sagt nur, dass 'b ['k']' wäre ein Wert von '1' – tisaconundrum

+0

@tisaconundrum yeah Ich weiß, die' -> 1 'wurde auskommentiert, seit ich kommentierte; Ich denke, zu der Zeit war ich nur wählerisch, für diejenigen, die aufgefordert werden, Code zu kopieren, um zu sehen, was es ausgibt – Jacquot

Verwandte Themen