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)

 



posted on 2018-05-03 16:24  Y易然R  阅读(84)  评论(0)    收藏  举报

导航