10. 字典(dict)
- 字典是另一种可变容器模型,可存储任意类型对象
- 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
- 键必须是唯一的,但值则不必
- 值可以是任意数据类型
- 键必须是不可变的,例如:数字、字符串、元组可以,但列表就不行
- 如果用字典里没有的键访问数据,会报错
- 字典的元素没有顺序,不能通过下标引用元素,通过键来引用
- 字典内部存放的顺序和 key 放入的顺序是没有关系的
格式如下:
d = {key1 : value1, key2 : value2 }
10.1 访问字典
dis = {'a': 1, 'b': [1, 2, 3]}
print(dis['b'][2])
10.2 修改字典
dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}}
dis[9]['name'] = 999
print(dis)
# {'a': 1, 9: {'name': 999}, 'b': [1, 2, 3]}
10.3 删除字典
用 del 语句删除字典或字典的元素。
dis = {'a': 1, 'b': [1, 2, 3], 9: {'name': 'hello'}}
del dis[9]['name']
print(dis)
del dis # 删除字典
# {'a': 1, 9: {}, 'b': [1, 2, 3]}
10.4 字典函数
- len(dict) 计算字典元素个数,即键的总数
- str(dict) 输出字典,以可打印的字符串表示
- type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型
- key in dict 判断键是否存在于字典中
10.5 字典方法
方法 | 描述 |
---|---|
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys(seq[, value]) | 创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值 |
dict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回默认值 |
dict.items() | 以列表形式返回可遍历的(键, 值)元组数组 |
dict.keys() | 以列表返回一个字典所有的键 |
dict.values() | 以列表返回字典中的所有值 |
dict.setdefault(key, default=None) | 如果 key 在字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None。 |
dict.update(dict2) | 把字典参数 dict2 的键/值对更新到字典 dict 里 |
dic1 = {'a': 'a'}
dic2 = {9: 9, 'a': 'b'}
dic1.update(dic2)
print(dic1)
# {'a': 'b', 9: 9}
- dict.pop(key[,default])
- 删除字典给定键 key 所对应的值,返回值为被删除的值。key 值必须给出,否则返回 default 值。
- dict.popitem()
- 随机返回并删除字典中的一对键和值(一般删除末尾对)
10.6 字典推导式
构造函数 dict() 直接从键值对元组列表中构建字典。如果有固定的模式,列表推导式指定特定的键值对:
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'jack': 4098, 'guido': 4127}
此外,字典推导可以用来创建任意键和值的表达式词典:
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
如果关键字只是简单的字符串,使用关键字参数指定键值对有时候更方便:
>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'jack': 4098, 'guido': 4127}
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。