Python之路Day5
今日大纲
1.昨日补充
2.字典介绍
3.字典的增、删、改、查及操作方法
4.字典的嵌套
1.昨日补充
range
当成:自定制的数字范围列表
与for循环结合,与len for循环结合。
range(10)
range(0,10,2)
range(10,1,-1)
补充:
Python2x: range 数字列表
xrange 可迭代对象。
python3x: range 可迭代对象。
2.字典的介绍
基础数据类型之一,{} 以键值对的形式存储数据。
dic = {'name':'Laonanhai',
'age':45,
'name_list':['反面教材','俊俊',....]
}
以key:value形式,映射,存储的大量的关系型数据。
数据类型的分类:
按照是否可变分类划分:
可变(不可哈希hash):list,dict,set, list = [11,222,333]
不可变(可哈希hash):str,tuple,int,bool name = 'alex'
按照是否是容器类划分:
容器类的数据类型:list,tuple,dict, l1 = [11,True,'alex',[22,33,44]]
非容器类的数据类型:str,int,bool。 s1 = '[11,22,33]'
字典的key必须是不可变的数据类型,是唯一的,
hash算法:
字典的键通过hash表转换成数字,采用二分查找查询数字。
字典的value可以是任意数据类型。
字典的查询速度非常快,存储的大量的关系型数据。
字典在python3.5包含3.5之前都是无序,但3.6之后是有序的。
3字典的增删改查
3.1 增
dic = {"name":"david","age":18,"hobbie":"gril"}
方法一 dic["sex"] = "males" #当key不存在时,直接在字典中添加键值对 print(dic)
dic["name"] = "zzw" #当key存在时,键值对直接覆盖字典的同名键值对 print(dic)
方法二 dic.setdefault("sex","males") #当key不存在时,直接添加 print(dic) dic.setdefault("name","zzw") #当key存在时,不覆盖同名键值对 print(dic)
3.2 删
dic = {"name":"david","age":18,"hobbie":"gril"}
方法一: print(dic.pop("name","david")) #有返回值,返回值即key对应的value print(dic) print(dic.pop("name1")) #找不到时,报错 print(dic) print(dic.pop("name2","查无此值")) #找不到时,如果设置了默认值,则返回默认值 print(dic)
方法二: print(dic.popitem()) #随机删除一对键值对,有返回值,即删除的键值对 print(dic)
方法三: dic.clear() #清空字典 print(dic)
方法四: (1)内存级别删除字典 del dic print(dic) (2) 根据key删除 del dic["name"] print(dic)
3.3 改
方法一 dic = {"name":"david","age":18,"hobbie":"gril"} dic["name"] = "zzw" print(dic)
方法二 dic = {"name":"david","age":18,"hobbie":"gril"} dic1 = {"name":"zzw","sex":"males"} dic.update(dic1) #dic1的键值对覆盖添加到dic print(dic1) print(dic)
3.4 查
方法一 dic = {"name":"david","age":18,"hobbie":"gril"} print(dic["name"]) print(dic["name1"]) #查不到直接报错
方法二 dic = {"name":"david","age":18,"hobbie":"gril"} print(dic.get("name")) print(dic.get("name1")) #查不到,返回默认值 None print(dic.get("name2","查无此值")) #查不到,如果已设置好默认值,直接返回设置好的默认值
方法三 for循环遍历查询 dic.keys(), dic.values(), dic.items() #类似于list但不是list的类型。 dic = {"name":"david","age":18,"hobbie":"gril"} print(dic.keys()) for key in dic.keys(): print(key) 执行结果 dict_keys(['name', 'age', 'hobbie']) name age hobbie dic = {"name":"david","age":18,"hobbie":"gril"} print(dic.values()) for value in dic.values(): print(value) 执行结果: dict_values(['david', 18, 'gril']) david 18 gril
''' 分别赋值概念 a, b = 1, 2 print(a, b) a, b = ('alex', '34') print(a, b) a, b = ['alex', '34'] print(a, b) 有如下 a = 1 b = 3,用一行代码将a b值互换。 a = 1 b = 3 a, b = b, a print(a, b) '''
dic = {"name":"david","age":18,"hobbie":"gril"}
print(dic.items())
for k,v in dic.items():
print(k, v)
执行结果:
dict_items([('name', 'david'), ('age', 18), ('hobbie', 'gril')])
name david
age 18
hobbie gril
4.字典的嵌套
dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } }
(1)给dic添加一个键值对,学校:老男孩 dic["学校"] = "老男孩" print(dic)
(2)将status对应的值改成True dic["status"] = True print(dic)
(3)给name_list对应的列表追加一个元素:平平 dic["name_list"].append("平平") print(dic)
(4)给personal_msg对应的字典添加一个键值对sex:男 dic['personal_msg']["sex"] = "男" print(dic)
(5)将hobby_list 对应的列表中的烫头改成唱歌。 dic['personal_msg']['hobby_list'][-1] = "唱歌" print(dic)

浙公网安备 33010602011771号