Python字典类型

本文介绍了Python中的字典类型,包括其特点、创建、增删改查操作,以及字典的内置函数。此外,还讲解了元组的使用,如拆包和装包,并通过实例展示了如何利用字典实现用户注册功能。最后,提到了一些字典的内置函数,如items()、values()、keys()等,并展示了如何使用这些函数处理字典数据。
摘要由CSDN通过智能技术生成

系列文章目录

第八章 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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值