系列文章目录
第八章 Python 机器学习入门之字典类型
前言
学习字典类型
一、元组类型
'''
元组:
类似于列表
特点:
1.定义的符号:()
2.元组中的内容不可修改
3.关键字:tuple
列表 元组
[ ] ( )
[1] (1,)#多个数值时可以默认为元组类型,而只有一个时,可以直接加','
'''
t1=()
print(type(t1))#type 可以判断括号内类型
会得到#<class 'tuple'>
t1=(1)
print(type(t1))#type 可以判断括号内类型
会得到#<class 'int'>
t1=('hello')
print(type(t1))#type 可以判断括号内类型
会得到#<class 'str'>
#
t1=(1,2,3,4,5)#元素在这里声明了,就再也不能改变了,只能进行提取,增添。
import random
list1=[]
for i in range(10):#循环取10个整数
ran = random.randint(1,20)
list1.append(rand)
print(list1)#[1,2,4,9,4,2,2,2,2,2]
t1=tuple(list1)#(1,2,4,9,4,2,2,2,2,2)注意符号的不同
print(t1)
#查询
print(t1[3])#取出9
print(t1[0:2])#取出1,2,4
print(t1[-1:-2:-1])#取出2,2
#最大值 最小值
print(max(t1))
print(min(t1))
#求和
print(sum(t1))
#求长度
print(len(t1))
元组中的函数:
#index(obj)___>个数
#count(obj)___>下标位置
print(t1.count(3))#求元组中,3的个数
print(t1.index(3))#求元组中找出4的下标位置,如果没有找到,则系统报错:valueerror
二、拆包和装包
t1=(1,3,5)
#常见的拆包失败
#a,v=t1变量比元组中的值还要少
#a,b,c,d=t1变量比元组中的值还要多
a,b,c=t1
print(a,b,c)
a=t1
print(a)
这里说一个*的运用。
a,*b=t1
print(a,b)#1,[3,5]
# *号可以将元组中剩余的值(没被调用的值)用列表形式输出。包含装包和拆包的过程。
# 只要有*号,print会给你分配一个[]
#装包:赋值
a,*y=2,4,5,1
#拆包:
a,*b=t1
print(a,*b)#1,3,5
print(*[3,5])#3,5
print(*(2,3,4))#2,3,4
三、字典类型
字典:
特点:
1.符号:{}
2.关键字:dict
3.保存的元素时:key:value
列表 元组 字典
[] () {}
list tuple dict
ele ele key:value
#定义
dict1={}#空字典
dict2 = dict()#空字典
dict3 = {'ID':'237879878379','name':'红栈茶凉'}
dict4={[('name','红栈茶凉'),('ID','237879878379')]}#列表也能转换成字典,但是字典内只能成对出现
通常如果写一个人的信息,一个武器的信息,一个书的信息,都可以写成类似dict3形式
#字典的增删改查
#增加:
#特点:按照上面的格式,如果在字典中存在同名的key,则发生值的覆盖(后面的值覆盖前面的)
#如果没有同名的key,则实现的添加功能
dict5={}
#格式:dict5[key]=value
dict5['weapon']='dao'
print(dict5)#weapon:dao
dict5['weapon']='jian'
print(dict5)# 同名weapon,会替换掉原来的值,变成weapon:jian
dict5['weapons']='🔪'
print(dict5)# 不同名weapons,会添加在原来值的后面,变成weapon:dao,weapons:🔪
#查询
dict1= {'1':'libai','2':'litaibai','3':'litaitaitaibai'}
print(dict1['2'])#litaibai 字典中找元素根据key
#删除:和列表相似,列表靠下标找值,而字典靠key找值
#删除一:
dict4={[('name','红栈茶凉'),('ID','237879878379')]}
del dict4['name']#将name:红栈茶凉 删除了。
#删除二:
dict4={[('name','红栈茶凉'),('ID','237879878379')]}
result=dict4.pop['name','没有找到此建']#将name:红栈茶凉 删除了。如果找到了这个key,同时会返回name的value值'红栈茶凉'。
#若是找不到这个key,则返回你设定的默认值,这里是'没有找到此建'
#删除三:
dict4={[('name','红栈茶凉'),('ID','237879878379')]}
result=dict4.popitem()#删除末尾最后一个元素,且返回值为删除的元素
#删除四:
dict4={[('name','红栈茶凉'),('ID','237879878379')]}
dict4.clear()#全清除,只剩下{}
练习①:
'''
案例:
用户注册功能
username
password
email
phone
'''
print('---------欢迎来到csdn----------')
#模拟数据库
datebase=[]
while True:
username = input('请输入用户名:')
password = input('请输入密码:')
repassword = input('确认输入密码:')
email = input('输入邮箱:')
phone = input('输入手机号:')
#定义一个字典
user = {}
#将信息保存在字典中
user['username']=username
if password == repassword:
user['password'] = password
else:
print('两次密码不一致,重新输入')
continue
user['email']=email
user['phone']=phone
#保存到数据库
datebase.append(user)
answer=input('是否继续注册(y/n)')
if answer=='n':
break
print(datebase)
三、字典的内置函数
#考试负数大于90分的人
#尝试对字典遍历
dict2={'流氓甲':100,'路人乙':91,'土匪丁':89}
for i in dict2:
print(i)#得到字典中所有的key
#字典中的函数:
#items() values() keys()
#items() :得到所有元组
print(dict2.items())#dict_items([('流氓甲', 100), ('路人乙', 91), ('土匪丁', 89)])
#可知items()之后的是一些元组。
for key,value in dict2.items():#将元组拆包,给到key,value分别('流氓甲', 100), ('路人乙', 91), ('土匪丁', 89)
if value > 90:
print(key)
#values:取出字典中所有值[100,91,89]
result = dict2.values()
print(result)
#求所有学生考试成绩平均分
for score in dict2.values():
print(score)
total = sum(dict2.values())
pinjun=total/len(dict2.values())
##keys()
names = dict2.keys()
print(names)#打印成列表,将所有的key。
还有一些其他的内置函数
'''
1.根据key获取值,如果key在字典中没有存在则报出keyError
dict[key]=value
2.字典的内置函数:
get(key)----->value 如果取不到值则不会报错,则返回None
get(key,default)--->value 如果能够取到值则放回字典中的值,如果娶不到则返回default的值
'''
#get()
dict2={'流氓甲':100,'路人乙':91,'土匪丁':89}
a=dict2.get('流氓甲',20)
print(a)
#update:将后面的字典合并到前面的字典中,相同的key值时,用后面的字典替换前面的字典
dict1 = {0:'sad',1:'happy'}
dict2 = {0:'worried',2:'lovely'}
dict1.update(dict2)#{0: 'worried', 1: 'happy', 2: 'lovely'}
print(dict1)
#fromkeys(seq,value):将seq转换成字典的表达形式,如果没有指定的value,则默认None
dict1 = {0:'sad',1:'happy'}
dict2 = {0:'worried',2:'lovely'}
list1=['as','av','ak']
new_list=dict.fromkeys(list1)#{'as': None, 'av': None, 'ak': None}
new_list1=dict.fromkeys(list1,2)#{'as': 2, 'av': 2, 'ak': 2}
print(new_list)