8 元组和字典的应用 #dictionary 字典 ''' 应用: 貂蝉 --- ['屠龙刀','手榴弹'] 800 诸葛亮 ---['鹅毛扇','碧血剑','98k枪'] 300 字典: 特点: 1. 符号:{} 2. 关键字: dict 3. 保存的元素是:key:value -对 列表
8 元组和字典的应用
#dictionary 字典'''
应用:
貂蝉 --- ['屠龙刀','手榴弹'] 800
诸葛亮 ---['鹅毛扇','碧血剑','98k枪'] 300
字典:
特点:
1. 符号:{}
2. 关键字: dict
3. 保存的元素是:key:value -对
列表 元组 字典
[] () {}
list tuple dict
ele ele key:value
[].append(8)
element 元素
'''
# 定义
dict1 = {} # 空字典
dict2 = dict() # 空字典 list1 = list() 空列表 tuple1= tuple() 空元组
dict3= {'ID':'93848304309403','name':'lucky','age':18} # ['7384938493','lucky',18]
# dict4 = dict(('name','lucky')) # {'name':xxx,'lucky':xxx}
# print(dict4)
dict4 =dict([('name','lucky'),('age',18)]) # 'name':'lucky','age':18
print(dict4)
dict5 = dict([(1,2),(4,5),(6,8),(9,0)])
print(dict5)
# 注意:list可以转成字典 但是前提:列表中元素都要成对出现
# 字典的增删改查:
# 增加: 格式:dict6[key]=value
# 特点: 按照上面的格式,如果在字典中存在同名的key,则发生值的覆盖(后面的值覆盖原来的)。
# 如果没有同名的key,则实现的添加功能(key:value添加到字典中)
dict6 = {}
dict6['brand']='huawei'
print(dict6) # {'brand':'huawei'}
dict6['brand']='mi'
print(dict6)
dict6['type']='p30 pro'
dict6['price']=9000
dict6['color']='黑色'
print(dict6)'''
案例:
用户注册功能
username
password
phone
'''
print('------------欢迎来到智联招聘用户注册--------------')
# 模拟数据库
database = []
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
# 保存到数据库
database.append(user)
answer = input('是否继续注册?(y/n)')
if answer!='y':
break
print(database)
for user in database:
print(user) #{}'''
增加元素(key:value):
dict[key]=value ----> {key:value}
特点: key在字典中是唯一的,value值可以是不唯一
{'name':'tom','name':'aaa'} 错误定义
{'张三':100,'李四':100,'王五':100} 正确
增加元素对比:
list1 = []
list1.append(element)
dict1 ={}
dict1[key]=value
修改:
list1[index]=newvalue
dict1[key]=newvalue
查询元素:
list1[index] ----> element
dict1[key] ---> value
取值:字典都是根据key获取value值
'''
list1 = [3,5,7,8]
print(list1[2]) # 列表中找元素根据下标
dict1 = {'1':'张三','2':'李四','3':'王五'}
print(dict1['2']) # 字典中找元素根据key
dict2= {'张三':100,'李四':100,'王五':89,'赵柳':99}
print(dict2['王五']) # key
# 尝试对字典遍历
for i in dict2:
print(i)
# 单独遍历字典的结果是: 字典的key
# 字典里面的函数:
# items() values() keys()
print(dict2.items())
# 考试分数大于90分人
# for i in dict2.items():
# print(i) # ('zhangsan',100)
# a,b =('aa','bb')
for key,value in dict2.items():
# print(key,value)
if value>90:
print(key)
# values: 取出字典中所有值,保存到列表中
result = dict2.values()
print(result)
# 求所有学生考试成绩平均分
for score in dict2.values():
print(score)
scores = dict2.values()
totle = sum(scores)
avg = totle/len(scores)
print(avg)
# keys(): 获取字典中的所有key键 (键值对)
names = dict2.keys()
print(names)
for name in names:
print(name)
# 找人: in 也可以用于字典操作 用于判断元素有没有在字典的key中出现
# 8 in list1
print('王五' in dict2)
'''
1. 根据key获取值,如果key在字典中没有存在则报出keyError
dict[key] ----> value
2. 字典的内置函数:
get(key) ----> value 如果取不到值则不会报错,则返回None
get(key,default) ---> value 如果能够取到值则返回字典中的值,如果取不到则返回default的值
items()---> list
keys() ---> list
values() ---> list
'''
# print(dict2['赵飞'])
print(dict2.get('赵飞',99))# 增加 改 查 (key)删除
# 删除:
list1=[3,7,9,0]
del list1[1]
print(list1)
dict1 = {'张三':100,'李四':100,'王五':89,'赵柳':99}
del dict1['王五']
print(dict1)
# del dict1['haha'] # keyError
# 字典的内置函数:删除
# dict1.remove('李四') 不存在 报错的
# pop(key[,default]) ----> 根据key删除字典中的键值对,返回值是 只要删除成功,则返回键值对的值value
# pop的默认值,往往是在删除的时候没有找到对应的key,则返回default默认值
result = dict1.pop('李四','80')
print(result)
result = dict1.pop('张小三','字典中没有此键')
print('======>',result)
print(dict1)
print('*'*30)
# popitem():随机删除字典中键值对(一般是从末尾删除元素)
dict1 = {'张三':100,'李四':100,'王五':89,'赵柳':99}
result = dict1.popitem()
print(result)
print(dict1)
result = dict1.popitem()
print(result)
print(dict1)
# clear() 同列表的clear()
dict1.clear()
print(dict1)
'''
删除:
del dict[key]
dict.pop(key[,default])
dict.popitem()
dict.clear()
'''
'''
其他的内置函数:
update() []+[] 合并操作
fromkeys(seq,[default]) ---->将seq转成字典的形式 如果没有指定默认的value则用None
new_dict = dict.fromkeys(list1)---》 {'aa': None, 'bb': None, 'cc': None}
---> 如果指定default,则用default替代None这个value值
new_dict = dict.fromkeys(list1,10) ---》 {'aa': 10, 'bb': 10, 'cc': 10}
'''
# dict1 = dict1+dict2 报错的
# print(dict1)
dict1= {0:'tom',1:'jack',2:'lucy'}
dict2 = {0:'lily','4':'ruby'}
result = dict1.update(dict2)
print(result)
print(dict1)
list1 = ['aa','bb','cc']
new_dict = dict.fromkeys(list1,10)
print(new_dict)a,b=(1,2),(3,3)
d,c=4,6
dict1={a:b,d:c}
print(dict1)
print('$'*30)
a,c=c,a
dict1={a:b,d:c}
print(dict1)'''
总结列表:
list
1. 定义
l = [] 空列表
l = ['aaa']
2.符号:
+ ----》 合并 []+[]
* -----> [] * n
in ----> a in [] False True
not in ---->
is 地址是否相等
not is
3.系统中给列表用函数:
len(list) ----> int
sorted(list) ----> 排序
max() 最大值
min() 最小值
list() 强制转换成列表类型
enumerate(list) 枚举 index value
4. 列表自身函数:
添加元素:
append() 末尾添加
extend() 末尾添加一组元素
insert() 指定位置插入
删除:
del list1[index]
remove(obj) 删除指定的元素,如果指定的元素不存在则报异常
pop() 队列 FIFO 栈 FILO 默认删除的是最后一个元素
clear() 清空元素
其他:
count() 指定元素的个数
sort() 排序
reverse() 翻转 [4,6,8,9,0] ---> [0,9,8,6,4]
算法:
选择排序
冒泡排序
'''
'''
元组:
类似列表(当成容器)
特点:
1. 定义的符号:()
2. 元组中的内容不可修改
3. 关键字: tuple
列表 元组
[] ()
[1] (1,)
[1,2] (1,2)
'''
t1 = ()
print(type(t1)) # <class 'tuple'>
t2 =('hello',)
print(type(t2))
t3 = ('aa','bb')
print(type(t3))
#
t4 =(3,5,7,8,1,4,7,8,9,0)
# 增删改 查
import random
list1=[]
for i in range(10):
ran = random.randint(1,20)
list1.append(ran)
print(list1) #
# tuple()
# list()
t5 = tuple(list1)
print(t5)
# 查询: 下标index 切片 [:]
print(t5[0])
print(t5[-1])
print(t5[2:-3])
print(t5[::-1])
# 最大值 最小值
print(max(t5))
print(min(t5))
# 求和
print(sum(t5))
# 求长度
print(len(t5))
# 元组中的函数:
# index(obj) ---》 个数
# count(obj) ---》 下标位置
print(t5.count(4)) # 个数
print(t5.index(4)) # 从t5这个元组中找出4的下标位置,没有报错:ValueError: tuple.index(x): x not in tuple# 拆包
t1 =(4,7,3)
# a,b =t1 # ValueError: too many values to unpack(拆包) (expected(希望,盼望) 2)
# x,y,z=(6,) #ValueError: not enough values to unpack (expected 3, got 1)
a,b,c = t1
print(a,b,c)
a=t1
print(a)
# 变量个数与元组个数不一致
t1 = (2,5,8,9,7)
a,*_,c = t1
print(a,c,_)
a,c,*_ = t1
print(a,c,_)
a,b,*c =t1
print(a,b,c)
t1=(9,4,8,6)
a,*b=t1
print(a,b) # *b 表示未知个数0~n, 0-- [] 多个元素的话 ~ [1,2,3,4,...]
print(*b)
'''
字符串 x,y,*z = 'hello' ---> x='h' y='e' z=['l','l','o']
列表 x,y,*z =['aa',6,'hello','good','happy','lucky'] ---> x='aa' y=6 z=['hello','good','happy','lucky']
'''
'''
t1=(9,4,8,6)
'''
t1=(9,)
x,*y = t1
print(x,y) # 9,[]
# 添加元素
y.append('a')
y.append('b')
print(y) # ['a','b']
print(*y) # print() print(4,8,6) 4 8 6
'''
元组:
1. 符号:(1,2,3) tuple
2. 关键字:tuple
3. 元组的元素只能获取,不能增删改
符号:
+
*
is not
in not in
系统函数:
max()
min()
sum()
len()
sorted() ----> 排序,返回的结果就是列表
tuple() ---->元组类型的强制转换
元组自带函数:
index()
count()
拆装包:
x,*y =(1,2,3,4,5)
print(y)
print(*y)
'''
t2 = (4,5)+(1,2)
print(t2)
t3= (3,4)*2
print(t3)
print(t2 is t3)
print(3 not in t3)
print(len(t2))
print(tuple(sorted(t2)))