dict(字典)类型
(参考教程5.5节,标准库手册4.10节)

字典是一个表示映射的类型,可以看作是一种二元组的集合,它的每个元素都是一个 "关键码 : 值" 对,表示 "关键码"(称为 key)与值的一个关联。在一个字典里的关键码具有唯一性,也就是说,每个关键码关联的值是唯一确定的。

语法

一对花括号 "{ }" 建立一个空字典。通过在花括号里直接写出一串逗号分隔的 "关键码 : 值" 对(用冒号分隔的一对表达式),可以直接描述非空的字典。

注意,"关键码" 和 "值" 都可以是任意表达式,但作为关键码的对象(关键码表达式求出的值)必须是不可变对象(例如,不能是表或集合,但可以是元组等复合对象)。

用途(语义)

字典的用途就是存入一些值,使之与相应的关键码关联,然后可以通过关键码取得保存的值。可以存入新的关键码-值关联,也可以为已有关键码关联新的值(修改其关联值,如果原有关联值,该值丢弃),还可以用 del 操作删除字典中已有的关联对。 用一个字典里不存在的关键码去查询相关值,将导致一个运行错误。

字典操作

(假设 dic 是一个已有的字典,k 是适当的关键码,v 是值):
  • dic[k] 给出 dic 里与 k 关联的值,如果 dic 里没有这个 k 就报告 KeyError
  • dic[k] = v 将字典 dic 中与 k 关联的值设定为 v,无论原来有没有与 k 关联的值
  • dic.keys() 得到字典 dic 里所有关键码,可用于 for 循环或转换为各种序列(如表)等
  • dic.values() 得到字典里保存的所有值,可用于 for 循环或转换为各种序列等
  • dic.items() 得到字典中的所有 (关键码, 值) 二元组
  • del dic[k] 删除字典 dic 里与 k 有关的关键码-值对
  • k in dic 在字典 dic 里有关键码 k 时得到 True,否则得到 False
  • k not in dic 在字典 dic 里没有关键码 k 时得到 True,否则得到 False
  • len(dic) 得到字典 dic 里的二元组个数
  • dic.clear() 删除字典 dic 里的所有元素
  • dic.get(k) 返回 dic 里与关键码关联的值,如果没有这个关键码就返回 None。另一调用形式是 dic.get(k, v)。如果 dic 里有关键码 k 就返回与之关联的值,不存在 k 时 dic.get(k, v) 返回值 v(作为默认值)。与 dic[k] 不同的是这个函数不会报错
更多操作见Python标准库手册的4.10节

在字典上迭代计算

程序里可能需要处理一个字典里保存的所有信息,下面是几个处理字典元素的循环,假设其中的 dic 是一个已有的字典,省略号表示一些处理代码:
for k in dic.keys() :
    ... k ... dic[k] ...

for k in sorted(dic.keys()) :
    ... k ... dic[k] ...

for k, v in dic.items() :
    ... k ... v ...
第一个例子里的 for 语句将在 dic 的所有关键码上循环,对每个关键码做一次迭代,但处理关键码的顺序由内部确定。第二个例子里的 for 语句也是对 dic 的每个关键码做一次迭代,但 sorted 将把这些关键码按某种顺序排列好(例如,对字符串关键码是按字典序排列),按排列后的顺序做。第三个例子在 for 语句的每次迭代时用 k, v 取得一对关键码和值。

上面第一个例子可以简化,例如写:

for k in dic :
    print(k, dic[k])
直接把字典写在 for 语句的 in 之后,就能逐个字典里的关键码,顺序由程序内部确定。
本页及相关页面(除另声明者外)由裘宗燕创建维护,可自由用于各种学习活动。其他使用需得到作者许可。