我是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;
这里有什么不同,他们都做同样的工作,但有不同的概念?
答案 0 :(得分:42)
在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中不是这样 - 一个字符串和一个数字(或 boolean)是不同的哈希。
如果您对两种语言之间的差异感兴趣,请查看ans
答案 1 :(得分:5)
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制作对象。它们不仅保存数据,还具有许多其他强大的功能,例如构造函数。
答案 2 :(得分:1)
考虑初始化程序中使用的标识符,例如
b = {i:j}
在Python中,i和j均被评估,而在Javascript中,仅j被评估。在Javascript中,您还可以使用标识符i来写点符号。因此,在Python中,
i='k'
j=1
b = {i:j}
b['k'] # -> 1
在Java语言中,
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中不是这样-字符串和数字(或布尔值)是不同的哈希值。
但是,
//b[i] will be valid in this case of javascrip code
b = {}
var i = 'k';
b[i] = 2
console.log(b); // -> {'k':2}
//thus b[i] = b['k'] = 2
因此,即使存在差异,但python中dictionary的所有应用程序都可以由javascript中的对象执行,反之亦然。