用「名字」而不是「编号」来存东西。列表按位置找,字典按标签找。
设 通讯录 = {"妈妈": "138", "爸爸": "139"}
花括号 {} 里是一对对的「标签:值」。想查谁的号码,直接用名字查:
设 通讯录 = {"妈妈": "138", "爸爸": "139"}
打印(通讯录["妈妈"]) # 138
打印(通讯录["爸爸"]) # 139
想象每样东西上都贴了一张标签,靠标签找到它对应的值。这里的标签是 "妈妈"、"爸爸",值就是电话号码。
和列表比:列表用编号([0])取,字典用标签(["妈妈"])取。
设 通讯录 = {"妈妈": "138"}
通讯录["爸爸"] = "139" # 没有这个标签 → 加进去
通讯录["妈妈"] = "10086" # 有这个标签 → 改值
打印(通讯录) # {妈妈: 10086, 爸爸: 139}
直接访问不存在的标签会报 CN0308。想先确认,用 有标签:
设 通讯录 = {"妈妈": "138"}
如果 有标签(通讯录, "爸爸")
打印(通讯录["爸爸"])
否则
打印("查无此人")
| 函数 | 作用 | 例子 |
|---|---|---|
所有标签(字) |
拿出所有标签,成一个列表 | 所有标签(通讯录) → [妈妈, 爸爸] |
所有值(字) |
拿出所有值,成一个列表 | 所有值(通讯录) → [138, 139] |
有标签(字, 标签) |
有没有这个标签 | 有标签(通讯录, "妈妈") → 真 |
删标签(字, 标签) |
删掉一个标签 | 删标签(通讯录, "妈妈") |
设 通讯录 = {"妈妈": "138", "爸爸": "139"}
打印(所有标签(通讯录)) # [妈妈, 爸爸]
打印(所有值(通讯录)) # [138, 139]
打印(有标签(通讯录, "哥哥")) # 假
删标签(通讯录, "妈妈")
打印(通讯录) # {爸爸: 139}
字典和第七章的 遍历 是天作之合。直接遍历字典,自动得到一个个标签:
设 成绩 = {"小明": 85, "小红": 92, "小刚": 78}
遍历 成绩 每个 名
打印(名 + ":" + 文本(成绩[名]))
# 小明:85
# 小红:92
# 小刚:78
遍历 成绩 每个 名会逐个取出标签(人名),再用成绩[名]拿到分数。不必专门写所有标签()。
(遍历语法下一章细讲。)
建一个通讯录 {"妈妈": "138", "爸爸": "139"},加上 "哥哥": "136",再用 有标签 判断有没有 "妈妈" 这个标签并打印结果。
设 通讯录 = {"妈妈": "138", "爸爸": "139"}
通讯录["哥哥"] = "136"
打印(有标签(通讯录, "妈妈")) # 真
打印(通讯录) # {妈妈: 138, 爸爸: 139, 哥哥: 136}
两个都能存一堆东西,什么时候用哪个?
| 场景 | 用哪个 |
|---|---|
| 只是排队、看重顺序 | 列表 [...] |
| 要用名字查东西、成对对应 | 字典 {...} |
一句话:有编号就够用列表;要按名字找东西就用字典。
下一章:七、遍历