字典
Python 的字典数据类型是基于 hash 散列算法实现的, 采用键值对 (key:value) 的形式, 根据 key 的值计算 value 的地址, 具有非常快的查取和插入速度. 但它是无序的, 包含的元素个数不限, 值的类型也可以是其它任何数据类型!
字典的 key 必须是不可变的对象, 例如整数, 字符串, bytes 和元组, 但使用最多的还是字符串. 列表, 字典, 集合等就不可以作为 key. 同时, 同一个字典内的 key 必须是唯一的, 但值则不必.
字典可精确描述为不定长, 可变, 无序, 散列的集合类型
字典的每个键值对用冒号 (:) 分割, 每个对之间用逗号 (,) 分割, 整个字典包括在花括号 ({}) 中 , 例如:
d = {key1 : value1, key2 : value2 }
创建字典
dict()函数是 Python 内置的创建字典的方法.
- test = {
- } # 创建空字典
- test = {
- "a":'123','b':'2',"c":3
- }
- dict([('name', 'juran'), ('age', 18), ('addr', 'cs')])
- {
- 'name': 'juran', 'age': 18, 'addr': 'cs'
- }
- dict(a=1, b=2, jack=4098)
- {
- 'a':1,'b':2
- }
访问字典
字典是集合类型, 不是序列类型, 因此没有索引下标的概念, 更没有切片的说法. 但是, 与 list 类似, 字典采用把相应的键放入方括号内获取对应值的方式取值.
- dic = {
- 'Name': 'json','Age': 18
- }
- print ("dic['Name']:", dic['Name'])
- print ("dic['Age']:", dic['Age'])
如果访问字典里没有的键, 会抛出异常:
- dic['address']
- Traceback (most recent call last):
- File "<pyshell#7>", line 1, in <module>
- dic["address"]
- KeyError: 'address'
增加和修改
增加就是往字典插入新的键值对, 修改就是给原有的键赋予新的值. 由于一个 key 只能对应一个值, 所以, 多次对一个 key 赋值, 后面的值会把前面的值冲掉.
- dic = {
- 'Name': 'json','Age': 18
- }
- dic["address"] = "beijing"
- dic["address"] = "Shanghai"
- dic["Age"] = 20
- dic
- {
- 'Name': 'json', 'Age': 20, 'address': 'Shanghai'
- }
- -------------------------------------
要统计字典内键的个数, 可以使用 Python 内置的 len()函数:
len(dic)
3
删除字典元素, 清空字典和删除字典
使用 del 关键字删除字典元素或者字典本身, 使用字典的 clear()方法清空字典
- dic
- {
- 'Name': 'json', 'Age': 20, 'address': 'Shanghai'
- }
- del dic['Name'] # 删除指定的键
- dic
- {
- 'Age': 20, 'address': 'Shanghai'
- }
- -------------------------------------
- a = dic.pop('Age') # 弹出并返回指定的键. 必须提供参数!
- 20
- dic.clear() # 清空字典
- del dic # 删除字典本身
字典的重要方法
get(key) 返回指定键的值, 如果值不在字典中, 则返回 default 值
items() 以列表返回可遍历的(键, 值) 元组对
keys() 以列表返回字典所有的键
values() 以列表返回字典所有的值
接下来我们看看例子:
- dic = {'Name': 'json', 'Age': 20, 'address': 'Shanghai'}
- dic.get("sex") # 访问不存在的 key, 没有报错
- dic['sex'] # 访问不存在的 key, 报错.
- Traceback (most recent call last):
- File "<pyshell#44>", line 1, in <module>
- dic["sex"]
- KeyError: 'sex'
- -------------------------------------
- dic.items()
- dict_items([('Name', 'json'), ('Age', 20), ('address', 'Shanghai')])
- -------------------------------------
- dic.values()
- dict_values(['json', 20, 'Shanghai'])
- -------------------------------------
- dic.keys()
- dict_keys(['Name', 'Age', 'address'])
- -------------------------------------
- dic.pop('Name')
- JSON
遍历字典
从 Python3.6 开始遍历字典获得的键值对是有序的
dic = {'Name': 'Jack', 'Age': 7, 'Class': 'First'}
1 直接遍历字典获取键, 根据键取值
- for key in dic:
- print(key, dic[key])
2 利用 items 方法获取键值, 速度很慢, 少用!
- for key,value in dic.items():
- print(key,value)
3 利用 keys 方法获取键
- for key in dic.keys():
- print(key, dic[key])
4 利用 values 方法获取值, 但无法获取对应的键.
- for value in dic.values():
- print(value)
来源: http://www.bubuko.com/infodetail-3399998.html