---恢复内容开始---
一、字典相关概念:
1、数据类型划分:可变数据类型与不可变数据类型
①、可变数据类型:list、dict、set(集合)
②、不可变数据类型:元组、int、bool、str
字典是键值对:键:必须是不可变数据类型(元组、int、bool、str)
值:任意数据类型
举例:
dic = {'name': [ 'laowang', 'xiaowang']
'班级情况':[ { 'num':54,‘age’:20'}]
True:1
(1,2,3):'无意义'
}
2、字典优点:①、二分法查找数据速度快。②、可以存储大量关系数据。
二、字典的增删改查:
1、增:
①、直接加:
dic = {'name': '小二','age':13, 'hobby':'篮球'} dic['height'] = 165 # 字典中没有一样的键值对就会添加,有则覆盖
print(dic) dic['age'] = 15 # 13被15覆盖
print(dic)
②、setdefault方法:
dic = {'name': '小二','age':13, 'hobby':'篮球'} dic.setdefault('weight', 100) # 字典中有相同的键值对,不做任何改变;没有才添加
print(dic) dic.setdefault('name','小三') # 不做修改
print(dic)
2、删:
①、pop方法:
dic = {'name': '小二','age':13, 'hobby':'篮球'} dic.pop('name') print(dic) print(dic.pop('name')) # 有返回值,按键去删除
print(dic.pop('weight', '没有此键')) # 可以设置随意返回值,用pop删除一个不知道有没有的键时,
print(dic.pop('weight',None)) # 加一个None(返回值),以防没有这个键而报错
②、popitem方法:
dic = {'name': '小二','age':13, 'hobby':'篮球'} print(dic.popitem()) # 随机删除,有返回值,返回的元组里面就是删除的键
③、clear方法:
dic = {'name': '小二','age':13, 'hobby':'篮球'} dic.clear() # 清空字典
④、del方法:
dic = {'name': '小二','age':13, 'hobby':'篮球'} del dic['age'] print(dic) del dic # 删除整个字典
print(dic)
3、改:
①、直接改:
dic1 = {'name': '小王','age':13, 'hobby':'篮球'} dic['age'] = 12 print(dic)
②、update方法:
dic = {'name': '小二', 'from':'American','weight':110} dic1 = {'name': '小王','age':13, 'hobby':'篮球'} dic1.update(dic) # 把dic的覆盖添加到dic1,有的覆盖,没有的添加 print(dic) print(dic1)
4、查:
①、直接打印键值对:
dic = {'name': '小二', 'from':'American','weight':110} print(dic.keys()) # 打印键 print(dic.values()) # 打印值 print(dic.items()) # 打印键值对
②、分别打印键值:
dic = {'name': '小二', 'from':'American','weight':110} for i in dic: # 打印字典所有的键 print(i) for i in dic.keys(): # 打印字典所有的的键 print(i) for i in dic.values(): # 打印字典所有的值 print(i)
③、同时打印键值对:
dic = {'name': '小二', 'from':'American','weight':110} for k,v in dic.items(): # 打印键值对#
print(k,v)
④、通过键找值:
dic = {'name': '小二', 'from':'American','weight':110} v1 = dic['name'] print(v1) # 有这个键的话就输出它的值 v2 = dic['name1'] print(v2) # 没有这个键的话就会报错
get方法:
print(dic.get('name')) # 有的话就输出 print(dic.get('name1')) # 没有的话就输出None,不会报错 print(dic.get('name1','没有该值')) # 可以随意设定输出值
二、字典的嵌套及一系列操作:
dic = {'name': ['xiaoer', 'laowang', 'zhangsan'], 'qingkuang':{ 'name': 'wangwu', 'age': 12, 'height':160, }, 'hobby':'打球' } # 1、修改字典的值: dic['hobby'] = '游戏' print(dic) # 2、在字典中增加值 dic['name'].append('sb') print(dic) # 3、将'laowang'全部大写 dic['name'][1] = dic['name'][1].upper() print(dic) # 4、在‘qingkuang'中添加一个键值对 dic['qingkuang']['from'] = 'china' print(dic)
1、将输入的字符串的数字个数打印出来:
info = input('>>>') for i in info: if i.isalpha(): info = info.replace(i,' ') l = info.split() print(len(l))
三、内容总结:
四、作业讲解:根据商品序号选择商品
# li = ['手机', '电脑', '鼠标垫', '游艇'] # 1、页面显示序号+商品名称 # 2、用户输入选择的序号,打印出商品 # 3、序号有误,重新输入 # 3、输入 Q 或者 q 退出 while 1: li = ['手机', '电脑', '鼠标垫', '游艇'] for i in li: print('{}\t\t{}'.format(li.index(i)+1,i)) # print(li.index(i)+1,i) 格式优化 num_of_choice = input('请输入商品序号/输入Q或者q退出:') if num_of_choice.isdigit(): num_of_choice = int(num_of_choice) if num_of_choice > 0 and num_of_choice <= len(li): print(li[num_of_choice]) else:print('请输入有效数字:') elif num_of_choice.upper() == 'Q':break else:print('请输入数字')
---恢复内容结束---