三、 dict字典
字典特点:
1、查询速度快
2、key唯一
3、key是不可变的
4、无序的
5、必列表内存空间多。
为什么快与为什么空间大呢?
Python的hash只是在单个程序或者说一个进程是唯一的。字典是使用hash将字符串变成数字,利用二分算法进行查询的。
3.1 增
3.1.1 添加新的元素
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}
newId = input('请输入新的学号')
info['id'] = newId
print('添加之后的id为:%d'%info['id'])
结果:
请输入新的学号188
添加之后的id为: 188
3.1.2 update函数:用一个字典更新另外一个字典
1 2 3 4 5 6 7 8 9 10 |
|
运算结果:
1 2 3 4 |
|
3.1.3 setdefault()
描 述:先查询字典中有没有键,如果没有则会加键,值可以指定默认
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 增
print(info.setdefault('姓名'))
print(info.setdefault('cx','cx'))
print(info)
结 果:
陈鑫
cx
{'工作': 'IT', 'cx': 'cx', '姓名': '陈鑫', '年龄': '21'}
3.2 删
3.2.1 del删除指定的元素
info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'}
print('删除前,%s'%info['name'])
del info['name']
print('删除后,%s'%info['name'])
3.2.1 pop()
描 述:移除字典数据,删除指定键并值,
返回 值:返回未删除的键,
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 删
info.pop('姓名')
print(info)
结 果:
{'工作': 'IT', '年龄': '21'}
dict_keys(['工作', '年龄'])
3.2.2 popitem()
描 述:随机返回并删除字典中的一对键值,
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 删
info.popitem()
print(info)
结 果:
{'姓名': '陈鑫', '年龄': '21'}
dict_keys(['姓名', '年龄'])
3.3 改
3.3.1
修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
demo:
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
info["id"] =90
print(info)
3.4 查
3.4.1 key查看value值
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}; print "dict['Name']: ", dict['Name']; print "dict['Age']: ", dict['Age']; #以上实例输出结果: #dict['Name']: Zara #dict['Age']: 7
3.4.2 get查看value值
描 述:返回指定键的值,如果值不存在字典中返回默认值
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 查
print ("Value : %s" % info.get('姓名'))
print ("Value : %s" % info.get('Sex', "nnnn"))
结 果:
Value : 陈鑫
Value : nnnn
3.5 清除
3.5.1 clear()
描 述:用来删除字典内所有元素
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 清除
print(len(info))
info.clear()
print(len(info))
结 果:
3
0
3.6 复制
3.6.1 copy()
描 述:复制字典,如果原字典修改,复制出来的字典不会修改,是新开辟出内存空间
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 复制
print(info)
info1 = info.copy()
print(info1)
结 果:
{'工作': 'IT', '年龄': '21', '姓名': '陈鑫'}
{'工作': 'IT', '年龄': '21', '姓名': '陈鑫'}
3.6.2 等号
描 述:复制字典,两个字典变量指向同一内存空间,在字典大的时候,原字典修改,复制字典也会跟着修改,而不会开辟另一块内存空间
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
# 复制
info1 = info
print(info1)
结 果:
{'年龄': '21', '姓名': '陈鑫', '工作': 'IT'}
3.7 初始化字典
3.7.1 fromkeys()
描 述:用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值
返回 值:返回字典
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
#初始化
dict = dict.fromkeys(info)
print(dict)
dict = dict.fromkeys(info,10)
print(dict)
print(type(dict))
结 果:
{'年龄': None, '工作': None, '姓名': None}
{'年龄': 10, '工作': 10, '姓名': 10}
<class 'dict'>
3.8 格式转换
3.8.1 items() 转换元组
描 述:以列表返回可遍历的元组数组
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
#转换元组
info_yz = info.items()
print(type(info_yz))
for i in info_yz:
print(i)
结 果:
<class 'dict_items'>
('年龄', '21')
('姓名', '陈鑫')
('工作', 'IT')
3.8.2 keys()转换列表
描 述:以列表返回一个字典所有的键
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
list_dict = info.keys()
print(list_dict)
结 果:
dict_keys(['姓名', '工作', '年龄'])
3.8.3 values()
描 述:将字典以列表返回到所有值
实 例:
#/usr/bin/env python
info = {
'姓名':'陈鑫',
'年龄':'21',
'工作':'IT'
}
#转换列表
info1 = info.values()
print(info1)
结 果:
dict_values(['21', 'IT', '陈鑫'])