App Inventor 2 字典操作完整教程

覆盖字典所有操作:创建/增/删/改/查/遍历/嵌套/JSON互转。

一、字典 vs 列表

对比列表字典
访问方式按索引(第1个、第2个)按键名(“name”、“age”)
查找性能慢(需遍历)快(直接定位)
适用场景有序数据键值对数据、JSON
典型用途商品列表、成绩列表用户信息、配置项

二、创建字典

2.1 创建空字典

初始化全局变量 用户信息 = 创建空字典

2.2 创建带初始值的字典

初始化全局变量 用户信息 = 创建字典(
  键值对("name", "张三"),
  键值对("age", 18),
  键值对("city", "北京"),
  键值对("vip", 真)
)

2.3 从JSON创建字典

初始化全局变量 用户信息 = 调用 字典.JSON转字典(
  '{"name":"张三","age":18,"city":"北京"}'
)

三、增加键值对

// 方法一:设置键的值(键不存在则新增,存在则覆盖)
调用 字典.设置键的值(全局变量 用户信息, "email", "zhangsan@qq.com")
调用 字典.设置键的值(全局变量 用户信息, "score", 95)

// 方法二:合并另一个字典
初始化局部变量 新数据 = 创建字典(键值对("phone", "138xxxx"), 键值对("level", "A"))
调用 字典.合并字典(新数据, 全局变量 用户信息)
// 注意:合并字典(源, 目标) — 将源合并到目标

四、查询键值

4.1 获取单个值

初始化局部变量 姓名 = 获取键的值(全局变量 用户信息, "name", "未知")
初始化局部变量 年龄 = 获取键的值(全局变量 用户信息, "age", 0)
// 第三个参数是"找不到时的默认值"

4.2 检查键是否存在

如果 键是否在字典中("email", 全局变量 用户信息) 则
  设置 标签1.文本 = 获取键的值(全局变量 用户信息, "email", "")
否则
  设置 标签1.文本 = "未设置邮箱"

4.3 获取所有键/值

初始化局部变量 所有键 = 获取键列表(全局变量 用户信息)
// → ["name", "age", "city", "vip", "email", "score"]

初始化局部变量 所有值 = 获取值列表(全局变量 用户信息)
// → ["张三", 18, "北京", 真, "zhangsan@qq.com", 95]

4.4 获取字典大小

初始化局部变量 键数量 = 字典的长度(全局变量 用户信息)
// → 6

五、修改键值

// 直接覆盖(设置键的值 = 修改)
调用 字典.设置键的值(全局变量 用户信息, "age", 19)    // 修改年龄
调用 字典.设置键的值(全局变量 用户信息, "city", "上海")  // 修改城市

六、删除键值对

// 删除单个键
调用 字典.删除键的条目(全局变量 用户信息, "vip")

// 删除后检查
如果 键是否在字典中("vip", 全局变量 用户信息) = 假 则
  设置 标签1.文本 = "vip字段已删除"

七、遍历字典

7.1 遍历所有键值对

// 方法一:遍历键列表
对于 每个 键 在 获取键列表(全局变量 用户信息) 中
  初始化局部变量 值 = 获取键的值(全局变量 用户信息, 键, "")
  设置 标签_结果.文本 = 合并字符串(
    标签_结果.文本, 键, ":", 值, "\n"
  )

// 方法二:字典遍历代码块(更简洁)
对于 每个键值对 键=k 值=v 在 全局变量 用户信息 中
  设置 标签_结果.文本 = 合并字符串(
    标签_结果.文本, k, ":", v, "\n"
  )

八、嵌套字典操作

8.1 创建嵌套字典

初始化全局变量 公司信息 = 创建字典(
  键值对("name", "App Inventor中文网"),
  键值对("address", 创建字典(
    键值对("city", "北京"),
    键值对("district", "海淀区"),
    键值对("street", "中关村大街1号")
  )),
  键值对("employees", ["张三", "李四", "王五"])
)

8.2 读取嵌套值

// 方法一:逐层取值
初始化局部变量 地址字典 = 获取键的值(全局变量 公司信息, "address", {})
初始化局部变量 城市 = 获取键的值(地址字典, "city", "")

// 方法二:键路径一步到位(推荐)
初始化局部变量 城市 = 获取键路径的值(全局变量 公司信息, ["address", "city"], "")
初始化局部变量 区域 = 获取键路径的值(全局变量 公司信息, ["address", "district"], "")

8.3 修改嵌套值

// 设置键路径的值
调用 字典.设置键路径的值(全局变量 公司信息, ["address", "city"], "上海")

九、字典与JSON互转

// 字典 → JSON字符串
初始化局部变量 JSON文本 = 调用 字典.字典转JSON(全局变量 用户信息)
// → '{"name":"张三","age":18,...}'

// JSON字符串 → 字典
初始化局部变量 字典 = 调用 字典.JSON转字典('{"name":"张三","age":18}')

// 实际应用:存储到TinyDB
调用 微数据库1.存储值("user_info", 调用 字典.字典转JSON(全局变量 用户信息))

// 从TinyDB读取
初始化局部变量 JSON = 调用 微数据库1.获取值("user_info", "{}")
设置 全局变量 用户信息 = 调用 字典.JSON转字典(JSON)

十、实战:用字典管理配置项

初始化全局变量 配置 = 创建字典(
  键值对("theme", "dark"),
  键值对("fontSize", 16),
  键值对("notifications", 真),
  键值对("language", "zh-CN")
)

// 保存配置
定义 保存配置()
  调用 微数据库1.存储值("app_config", 调用 字典.字典转JSON(全局变量 配置))

// 加载配置
定义 加载配置()
  初始化局部变量 JSON = 调用 微数据库1.获取值("app_config", "{}")
  如果 JSON ≠ "{}" 则
    设置 全局变量 配置 = 调用 字典.JSON转字典(JSON)

// 修改单项配置
定义 设置配置(键, 值)
  调用 字典.设置键的值(全局变量 配置, 键, 值)
  调用 保存配置()

// 使用
当 开关_深色模式.改变 时
  调用 设置配置("theme", 如果 开关_深色模式.开启 则 "dark" 否则 "light")

参考资料


文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn

参考资料与版权声明

原文来源

版权声明

本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:
  • MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。