2014-01-08 89 views
27

我是python的新手,我正在阅读字典。从我之前使用JavaScript这样的语言的经验来看,他们看起来像是我的对象。字典可以存储列表并在javascript中将许多类似对象分享给对象。Python字典vs Javascript对象

前Python代码:

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

前的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; 

这里有什么区别,他们都做同样的工作,但也有不同的概念?

+1

你知道你正在谈论两种不同的语言,对不对?你在寻找什么样的差异? – thefourtheye

+3

python代码也是js ... – dandavis

+3

Javascript允许'menu.chicken'作为menu ['chicken']'(IIRC)的别名,但python不允许这样做。此外,如果请求的项目不存在,python字典将引发“KeyError”。 Javascript将返回'undefined'(再次,IIRC)... – mgilson

回答

32

From :

在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 b.i // - > 1当在字典中使用数字或布尔值时,Javascript将使用数字或布尔值的字符串表示形式 访问该元素。在Python中不是这样 - 一个字符串和一个数字(或 布尔值)是不同的工具。

如果你有兴趣在两种语言之间的差异,然后再看看ans

+0

Python中不存在' - >'运算符(第二块代码) – Jacquot

+0

@Jacquot他只是说'b ['k']'是'1'的值将会是'1' – tisaconundrum

+0

@tisaconundrum是的我知道,' - > 1'已经被注释掉了,因为我评论过;我想当时我只是挑剔,对于那些提示复制粘贴代码来查看它输出的内容的人 – Jacquot