跳到主要内容

字典与对象:键值对的世界

什么是键值对?

如果列表是"带编号的柜子"(第 0 个、第 1 个……),那字典/对象就是"带标签的柜子"——你通过标签(键)找到对应的东西(值)。

就像真正的字典:查"apple"这个词(键),得到"苹果"这个释义(值)。

创建字典/对象

加载代码编辑器中……
Python dictJavaScript Object
键的引号必须加引号可以不加(如果是合法标识符)
访问方式d["key"]d.get("key")obj.keyobj["key"]
获取长度len(d)Object.keys(obj).length

JS 对象的键可以不加引号({ name: "小明" }),但 Python 字典的键必须加引号({ "name": "小明" })。这是一个常见的转换错误。

增删改查

加载代码编辑器中……

遍历

加载代码编辑器中……
操作PythonJavaScript
所有键d.keys()Object.keys(obj)
所有值d.values()Object.values(obj)
键值对d.items()Object.entries(obj)

JS 的方法都以 Object.xxx() 开头,是静态方法。Python 的是实例方法。写法不同,但功能一样。

嵌套结构

真实数据经常是嵌套的——对象里套数组,数组里套对象:

加载代码编辑器中……
问问 AI

问 AI:"JSON 和 JavaScript 对象有什么关系?它们是同一个东西吗?"

JSON 是当今互联网上最通用的数据交换格式,理解它和 JS 对象的区别很重要。

🏋️AI 练习

设计一个"通讯录"数据结构,包含 3 个联系人,每个联系人有:姓名、电话、城市。然后:

  1. 打印所有联系人的姓名
  2. 查找住在"北京"的联系人
  3. 添加一个新联系人
  4. 删除一个联系人

用 Python 和 JS 各写一版。

JS 特有:Map

JS 的 Object 有一些局限性(键只能是字符串/Symbol),所以 ES6 引入了 Map

加载代码编辑器中……

日常使用中,JS 大多数时候用普通 Object 就够了。Map 在需要非字符串键频繁增删时更好。

小结

概念Python dictJavaScript Object
创建{"key": val}{key: val}
访问d["key"]obj.keyobj["key"]
安全访问.get(key, default)obj.key ?? default
删除del d["key"]delete obj.key
所有键d.keys()Object.keys(obj)
键值对d.items()Object.entries(obj)
检查键"key" in d"key" in obj