005---Python数据类型--字典

字典

 

 

 

字典的定义及创建

 

定义及特性: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 男
posted @ 2018-12-16 17:15  爬呀爬Xjm  阅读(159)  评论(0编辑  收藏  举报