字典的定义及创建
定义及特性: python 语言中唯一的映射数据类型, 是一种 key:value 结构, 键值之间用冒号, 各个键之间用逗号隔开.
字典是无序的
字典是可变数据类型
key 必须是可哈希, 也就是不可变数据类型, 唯一
寻址速度快, 效率高. 因为键是可哈希的, 取值时带上 key, 内部会通过哈希算法转化为数字. 找到与该数字对应的 key
创建:
- In [13]:
- # 一
- dic = {
- 'name':'江子牙','age':21
- }
- print(dic,type(dic))
- # 二
- dic1 = dict(name='江子牙',age=21)
- print(dic1)
- # 三
- dic2 = {
- }
- print(dic2,type(dic2))
- {
- 'name': '江子牙', 'age': 21
- } <class 'dict'>
- {
- 'name': '江子牙', 'age': 21
- }
- {
- } <class 'dict'>
字典的增删改查及常用方法:
- In [24]:
- # 增加
- dic = {
- 'name':'江子牙','age':21
- }
- # 存在则修改, 不存在, 则添加
- dic['sex'] = '男'
- print(dic)
- dic.setdefault('closed','停用')
- print(dic)
- # 存在 key, 不做任何改变. 不存在则添加.
- dic.setdefault('name','小喵喵')
- print(dic)
- {
- 'name': '江子牙', 'age': 21, 'sex': '男'
- }
- {
- 'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'
- }
- {
- 'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'
- }
- In [40]:
- # 删除
- dic = {
- 'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'
- }
- # 有返回值 没有 key 时就会报错 最好在后面加 None
- dic.pop('closed')
- print(dic)
- # 随机删除 返回 (key,value) 无意义
- res = dic.popitem()
- print(res)
- print(dic)
- # del 不存在就会报错
- del dic['name']
- print(dic)
- # clear() 清空字典
- dic.clear()
- print(dic)
- dic1 = {
- 'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'
- }
- print(dic1.pop('删除','不存在'))
- dic1.pop('删除')
- # 总结: 最好通过 pop 来删除 不存在时可以通过设置返回值还不会报错
- {
- 'name': '江子牙', 'age': 21, 'sex': '男'
- }
- ('sex', '男')
- {
- 'name': '江子牙', 'age': 21
- }
- {
- 'age': 21
- }
- {
- }
不存在
- ---------------------------------------------------------------------------
- KeyError Traceback (most recent call last)
- <ipython-input-40-9da8cbd17f61> in <module>
- 22 dic1 = {'name': '江子牙', 'age': 21, 'sex': '男', 'closed': '停用'}
- 23 print(dic1.pop('删除','不存在'))
- ---> 24dic1.pop('删除')
- KeyError: '删除'
- In [47]:
- # 改
- # update()
- d1 = {'name':'alex','age':18}
- d2 = {'name':'','sex':1,'age':22}
- d2.update(d1)
- # 覆盖添加
- print(d2)
- d2.update(name=1,age=2)
- print(d2)
- d2.update({'sex':'男'})
- print(d2)
- {'name': 'alex', 'sex': 1, 'age': 18}
- {'name': 1, 'sex': 1, 'age': 2}
- {'name': 1, 'sex': '男', 'age': 2}
- In [53]:
- # 查
- d = {'name': '江子牙', 'age': 21, 'sex': '男'}
- print(d.keys()) # 返回列表
- print(d.values()) # 返回列表
- print(d.items()) # 返回列表, 里面是元祖
- print(d.get('name'))
- print(d.get('aaa'))
- print(d.get('aaa','不存在'))
- # 可通过 for 循环来对上述结果来进行查询.
- for key in d:
- print(key)
- for key in d.keys():
- print(key)
- for key,value in d.items():
- print(key,value)
总结: 首选 get
- dict_keys(['name', 'age', 'sex'])
- dict_values(['江子牙', 21, '男'])
- dict_items([('name', '江子牙'), ('age', 21), ('sex', '男')])
江子牙
None
不存在
- name
- age
- sex
- name
- age
- sex
name 江子牙
age 21
sex 男
来源: http://www.bubuko.com/infodetail-2886619.html