Abd*_*rah 41 javascript python dictionary object
我是python的新手,我正在阅读有关字典的内容.从我以前使用像javascript这样的语言的经验来看,它们对我来说似乎是对象.字典可以存储列表并在javascript中与对象共享许多相似之处.
ex python代码:
menu = {}
menu['Chicken Alfredo'] = 14.50
menu['Italian Pasta'] = 15.89
menu['Shrimp Soup'] = 12.43
menu['Persian Rice'] = 21.99
Run Code Online (Sandbox Code Playgroud)
前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;
Run Code Online (Sandbox Code Playgroud)
这里有什么不同,他们都做同样的工作,但有不同的概念?
a.m*_*.m. 46
在Python中,字典是一种映射类型.它们可以使用逗号分隔的name:value对序列进行初始化,用花括号括起来.使用涉及方括号的数组符号访问它们.密钥可以是任何可清除的,包括数字和字符串.
在Javascript中,字典与对象相同.它可以使用与Python相同的语法进行初始化.密钥可以是数字,字符串或标识符.因为字典也是一个对象,所以可以使用数组表示法访问元素,例如b [i],或使用属性表示法,例如
考虑初始化程序中使用的标识符,例如
Run Code Online (Sandbox Code Playgroud)b = {i:j}在Python中,i和j都被评估,但在Javascript中,只评估j.在Javascript中,您还有权使用标识符i以点表示法编写.因此在Python中,
Run Code Online (Sandbox Code Playgroud)i='k' j=1 b = {i:j} b['k'] # -> 1在Javascript中,
Run Code Online (Sandbox Code Playgroud)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 bi // - > 1当在字典中使用数字或布尔值时,Javascript将使用数字或布尔值的字符串表示来访问元素.在Python中不是这样 - 字符串和数字(或布尔值)是不同的哈希.
如果您对两种语言之间的差异感兴趣,请查看ans
Python字典中的键必须是可哈希的(例如,字符串,数字,浮点数等)。
以下是JavaScript中的有效对象:
const javascriptObject = { name: 'Alexander Pushkin', year: 1799 }
Run Code Online (Sandbox Code Playgroud)
但是,它将作为Python字典无效:
python_dictionary = {name: 'Alexander Pushkin', year: 1799}
# Traceback (most recent call last):
# NameError: name 'name' is not defined
Run Code Online (Sandbox Code Playgroud)
一个快速的解决方法是将Python词典的键转换为字符串:
my_dictionary = {'name': 'Alexander Pushkin', 'year': 1799}
Run Code Online (Sandbox Code Playgroud)通过字典,您可以使用JavaScript创建对象。它们不仅保存数据,还具有许多其他强大的功能,例如构造函数。