概述
字典就是一组组键 - 值对,通过指定键可以返回其值。简单说就是将序列中序号用其他类型代替。
创建和使用字典
phoneBook = {'Tom':'666','Jerry':'2333'}
a = phoneBook['Tom']
如上,通过 {} 创建字典,键和值用 :隔开,每对之间用 ,隔开
还可以用 dict()构造字典,三种方法如下:
# 创建空字典
dict()
# 传入关键字
dict(a='a', b='b', t='t')
#{'a': 'a', 'b': 'b', 't': 't'}
# 映射函数方式来构造字典
dict(zip(['one', 'two', 'three'], [1, 2, 3]))
#{'three': 3, 'two': 2, 'one': 1}
# 可迭代对象方式来构造字典
dict([('one', 1), ('two', 2), ('three', 3)])
#{'three': 3, 'two': 2, 'one': 1}
基本字典操作
函数 | 说明 |
---|---|
len(d) | 返回字典包含的键值数 |
d[k] | 返回与 k 关联的值 |
d[k]=v | 将键 k 的值改为 v |
del d[k] | 删除键 k |
k in d | 检查 d 中是否有键为 k 的键值对 |
- 键的类型:字典中的键可以是任何不可变的类型,如浮点数、字符串或元组
- 自动添加:即使是字典中原本没有的键,也可以直接赋值,会自动增加键值对。
字典方法
clear
删除所有字典项
copy、deepcopy
copy 返回一个新字典,其包含的键值对与原来字典相同(浅复制)。浅复制时,替换不受影响,修改会使原件也发生变化,如下代码:
x = {'username':'admin','machines':['foo','bar','baz']}
y = x.copy()
y['username'] = 'hhh'
y['machines'].remove('bar')
print(x)
print(y)
# x = {'username': 'admin', 'machines': ['foo', 'baz']}
# y = {'username': 'hhh', 'machines': ['foo', 'baz']}
如上, = 赋值时,不会影响原件,而调用方法时,会修改原件。
如果要完全复制,需要进行深复制,使用模块 copy 中的 deepcopy ,将上述代码改为:
import copy
y = copy.deepcopy(x)
dict.fromkeys(list,value)
用于创建一个键为 list 中元素的字典,其值全部为 value,通常省略 value,每个键值都为 None
get(key,defaultValue)
当用普通方法取键值时,如果没有键会报错。但是 get 方法会返回 defaultValue,通常省略,返回 None
setdefault(key,defaultValue)
与 get 类似,如果有 key 的键,则保持不变,否则将 key 的键值改为 defaultValue
items
返回一个包含所有字典项的列表,其中每个元素都为(key,value)的形式。排序不确定
pop(key)
获取键 key 的关联值,并将此键值对删除。
popitem
从字典中随机弹出一个键值对,也就是随机将一个键值对返回并删除。
a = {'name':'Tom','age':24,'interest':'running'}
b = a.popitem()
# a = {'name': 'Tom', 'age': 24}
# b = ('interest', 'running')
update
使用一个字典中的项来更新另一个字典。