创建
dict的模式为key:value,是一种非常方便的数据存储模式,与json也有很好的相性。
创建一个dict时,可以直接进行声明
dict1 = {'male': 'man', 'age': '18'}
dict中,key之间或者value之间数据类型可以不同,例如
dict1 = {'male': 'man', 35: 18}
或者直接将value设为另一个字典,变为嵌套字典
dict1 = {1: {'male': 'man', 'age': '18'}, 2: {'male': 'woman', 'age': '17'}}
有关嵌套字典的操作和二维数组或者嵌套列表差不多,故在此不表,本文只将对于dict的基础操作作为重点。
增加和修改
增加有两种方式
(1) 直接赋值
key不存在则进行增加,key存在则进行修改
dict1 = {'male': 'man', 'age': '18'}
print(dict1)
dict1['height'] = '137'
print(dict1)
dict1['age'] = '16'
print(dict1)
结果为
{'male': 'man', 'age': '18'}
{'male': 'man', 'age': '18', 'height': '137'}
{'male': 'man', 'age': '16', 'height': '137'}
(2)setdefault
key不存在则进行增加,key存在不进行修改
dict1 = {'male': 'man', 'age': '18'}
print(dict1)
dict1.setdefault('height')
print(dict1)
dict1.setdefault('height', '111')
print(dict1)
结果为
{'male': 'man', 'age': '18'}
{'male': 'man', 'age': '18', 'height': None}
{'male': 'man', 'age': '18', 'height': None}
(3)update
update与赋值一样,优点在于一行代码便可更新,较为直接和美观
dict1 = {'male': 'man', 'age': '18'}
print(dict1)
dict1.update({'age': '16', 'height': '122'})
print(dict1)
结果为
{'male': 'man', 'age': '18'}
{'male': 'man', 'age': '16', 'height': '122'}
查询
(1)直接调用
dict1 = {'male': 'man', 'age': '18'}
print(dict1['age'])
print(dict1['assssse'])
如果没有则会报错
18
Traceback (most recent call last):
File "E:\pytest\DictHandler.py", line 3, in <module>
print(dict1['assssse'])
~~~~~^^^^^^^^^^^
KeyError: 'assssse'
(2)get()
防止报错可以使用get()
dict1 = {'male': 'man', 'age': '18'}
print(dict1.get('age'))
print(dict1.get('ssss'))
print(dict1.get('ssss', 'error'))
可以增加报错信息
18
None
error
(3)keys(), values(), items()
dict1 = {'male': 'man', 'age': '18'}
print(dict1.keys())
print(dict1.values())
print(dict1.items())
结果返回
dict_keys(['male', 'age'])
dict_values(['man', '18'])
dict_items([('male', 'man'), ('age', '18')])
如果要转List直接
list(dict1.keys())
即可
删除
推荐使用pop,del函数属于python中通用的删除函数,此处不表
向pop中传入key值即可,函数会返回value,同时也可以增加报错信息
dict1 = {'male': 'man', 'age': '18'}
print(dict1.pop('age'))
print(dict1.pop('sss', 'error'))
print(dict1)
结果为
18
error
{'male': 'man'}
或者直接clear()全部清空