python-dict: 增删改查
python字典:
字典是一种可变容器模型,且可存储任意类型对象
查找速度快(以空间换时间)
字典键的特性:
1.字典值可以取任何Python对象,但键不行
2.同一个键如果出现两次,那后一个值会覆盖前一个值
d = {'name':'小明','name':'小王'}
print(d['name'])
---console---
小王
3.字典键为不可变类型,可以用str,int,bool,tuple,但一般用str或者int
d = {['list']:18}
print(d)
---console---
Traceback (most recent call last):
File "D:/xxxx/demo01.py", line 26, in
d = {['list']:18,{'a'}:20}
TypeError: unhashable type: 'list'
字典创建
d1 = {'name':'张三','age':18}
d2 = dict(name='张三',age=18)
d3 = dict((('name','张三'),('age',18)))
d4 = dict(zip(['name','age'],['张三',18]))
d5 = dict(zip(('name','age'),('张三',18)))
d6 = dict({'name':'张三', 'age':18})
print(d1)
print(d2)
print(d3)
print(d4)
print(d5)
print(d6)
print(d1 == d2 == d3 == d4 == d5 == d6)
---console---
{'name': '张三', 'age': 18}
{'name': '张三', 'age': 18}
{'name': '张三', 'age': 18}
{'name': '张三', 'age': 18}
{'name': '张三', 'age': 18}
{'name': '张三', 'age': 18}
True
1.增
d1 = {'name':'张三','age':18}
d1['sex'] = '男' # 没有键值对,添加
d1['age'] = '20' # 覆盖
如果键不存在于字典中,将会添加键并将值设为默认值
如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。
d1.setdefault('address','上海')
print(d1)
---console---
{'name': '张三', 'age': '20', 'sex': '男', 'address': '上海'}
2.删
d2 = {'name': '张三', 'age': '20', 'sex': '男', 'address': '上海'}
有返回值,按键删除
k = d2.pop('name')
print(k)
print(d2)
---console---
张三
有返回值,按键去删除,没有该键,返回设置的值
k1 = d2.pop('hobby','没有此键')
print(k1)
print(d2)
---console---
没有此键
默认删除最后一个键值对,并以元组形式返回
k2 = d2.popitem()
print(k2)
print(d2)
---console---
('address', '上海')
清空键值对
d2.clear()
print(d2)
---console---
{}
删除字典
del d2
print(d2)
---console---
Traceback (most recent call last):
File "D:/xxxx/demo01.py", line 72, in
print(d2)
NameError: name 'd2' is not defined
3.改(修改键值不赘述)
字典更新update
d3 = {'name': '张三', 'age': '20'}
d4 = {'sex': '男', 'address': '上海'}
有相同键,就覆盖键值
d3.update(d4)
print(d3)
---console---
{'name': '张三', 'age': '20', 'sex': '男', 'address': '上海'}
4.查
d5 = {'name': '张三', 'age': '20'}
print(d5.keys()) 获取键
print(d5.values()) 获取值
print(d5.items()) 获取键和值
---console---
dict_keys(['name', 'age'])
dict_values(['张三', '20'])
dict_items([('name', '张三'), ('age', '20')])
get()存在键,不报错,不存在键,则返回None
print(d5.get('name'))
print(d5['name'])
---console---
None
Traceback (most recent call last):
File "D:/xxxx/demo01.py", line 85, in
print(d5['sex'])
KeyError: 'sex'

浙公网安备 33010602011771号