【问题标题】:Differences between a Python dictionary and JavaScript "dictionary"? [closed]Python字典和JavaScript“字典”之间的区别? [关闭]
【发布时间】:2020-12-24 03:44:02
【问题描述】:

我现在正在学习 JavaScript。我在课堂上了解到 JavaScript 字典是对象。老师这样说的方式暗示python字典不是。在我看来,python 字典是“字典”类的一个实例。这意味着在 JavaScript 中my_dict['key1'] 将返回关联的value1,但my_dict.key1 也将返回。在 python 中,my_dict.key1 会告诉你“字典”类中没有方法key1。虽然我知道如何使用 python,但我对编程的一般知识是相当一周的。我的问题是:

  1. Python 字典和 JavaScript 字典有什么区别
  2. “JavasScript 字典是对象”与推论“Python 字典不是对象”的含义是什么(如果这是真的)?
  3. 这对我在使用字典时应该如何看待 Python 和 JavaScript 编程有何影响?

【问题讨论】:

  • 这在几个方面是偏离主题的。看来您是在要求我们为您提供教程概述——可通过 Python dict 教程获得的知识。你问了多个问题。你问开放式问题。你的措辞邀请意见。您要求提供资源建议。
  • "老师说这句话的方式暗示python字典不是。"嗯,他们是。 Python 中的 Everything 是一个对象。事实上,Javascript 有原始类型,而 python 没有。在任何情况下,Python 字典和 Javascript 对象实际上是不同的,至少它们应该是不同的。 Python 字典是 maps,相当于 Javascript Map。 JS 对象的等价物是从类创建的 Python 实例,这些语言有两种不同的继承模型
  • @Prune 我倾向于同意这一点,但我也认为这是造成误解的根本原因,因为它们的语法非常相似,但存在重要差异,从概念上讲它们应该被视为非常不同。
  • 注意,Javascript 没有字典,那些是 Javascript 对象。它们使用与 Python dict 文字类似的 语法,但它们在概念上有所不同,尽管所有对象本质上都是从它们的属性到它们的属性值的映射。但是Python字典的直接等价物是JS Map
  • 另外,这个讨论在我遇到的问题中对我非常有用,所以我想知道它对其他人是否有用。

标签: javascript python dictionary


【解决方案1】:

在 Python 中,字典是一种映射类型。它们可以使用一系列以逗号分隔的名称:值对进行初始化,用花括号括起来。使用包含方括号的数组表示法访问它们。键可以是任何可散列的,包括数字和字符串。

在 Javascript 中,字典与对象相同。它可以使用与 Python 相同的语法进行初始化。键可以是数字、字符串或标识符。因为字典也是一个对象,所以可以使用数组表示法访问元素,例如b[i],或使用属性表示法,例如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

【讨论】:

  • "在 Javascript 中,字典等同于对象。"在 Python 中,字典也是对象。 Everything 是一个对象。 Javascript没有字典,它有对象和映射,后者相当于 Python 字典
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多