day5字典的方法,多变量赋值与for循环的结合,购物车的实现
day5内容
字典
字典的增删改查
字典与列表元组的嵌套
多变量赋值与for循环的结合(与列表,元组的结合)
购物车的实现
1.字典:
通过键值对存放大量,无序的,各种数据类型的,关系型数据
不可变可哈希的数据,三种基本数据(int,bool,str)和元组
不可哈希(可变)的数据类型,列表,字典,集合
容器型数据类型(保留数据的原有数据类型),列表元组字典
非容器型数据,int,bool,str
字典的key值必须可哈希(hash)不可变的数据类型,键必须是唯一的
2.字典的增删改查
增:两种方法
- 通过key值直接增加,dict[key] = value,有则覆盖,无则添加
- setdefaut()方法,dict.setdefaut(key,value),有则不改,无则添加
删:
按key键删除,pop(key)方法,有返回值,返回key键对应的value,没有key则会报错,因此可设定返回值,没有key值时返回设定值pop(key,设定返回值)
popitem()方法随机删除,返回元组存放的键值对,py3.6之前字典是无序的,此方法随机删除,3.6及之后字典是有序的,popitem()方法删除字典最后一组键值对,返回元组存放的键值对
clear()方法,清空字典
del方法,从内存级别删除,按键值对删除del [key]
改:
按键值对更改,与增的第一种方法相同,dict[key] = new value
update方法,dict.update(dict1)将dict1的键值对覆盖、增加到dict
查:
通过key值查询,for循环遍历查询(in与字典的结合,in只能遍历字典的key值,输出value值,可以用key值关联)
keys()方法,values()方法,items()方法,不对原字典进行修改,生成特殊数据类型的类似列表的dict_keys,dict_values,dict_items数据类型的数据
keys()将字典的key值生成类似列表的dict_keys数据类型[]
values()方法将字典的values值生成类似列表的dict_values类型[]
items()方法,将字典的键值对以元组数据的方式存放在类似列表的dict_items类型[]中
dict_keys,dict_values,dict_items三种数据类型可以通过list()括起来,改为list类型,从而进行增删改查的操作
其他方法,字典有len()方法,输出键值对个数,但是没有count方法
3.字典与列表元组的嵌套,
先找到目标元素的位置或上一级位置,进行字典,列表,元组的,字符串的相应操作,考虑是否已经修改原数据,没有修改则需要赋值
4.多变量的赋值,与for..in循环的结合
a,b = 1,2
a,b =(1,2)元组
a,b = [1,2]列表
a,b = {"1":1,"2":2}字典方法,字典赋值会将字典的key值赋给变量
for a,b in [[1,2],[3,4],[5,6]]: print(a,b)会将1,3,5赋值给2,4,6赋值给b,将右边数据的元素的下一级元素分别赋给左边同等数量的变量
5.购物车的实现
可以构建字典,通过字典提取商品信息和序号
也可以不构建字典,用列表的索引与商品序号的加一运算,计算数据


#思路用字典做,要求1输出序号和商品名称,使用for..in循环,或者用items()方法 #构建字典 li = ["手机", "电脑", '鼠标垫', '游艇'] dic,dict = {},{} for i in li: dic[li.index(i)+1] = i # print(dic),构建完成,输出字典键值对 while True: for i,v in dic.items(): print(i,v)#序号+商品 choice = input("请输入序号").strip() #2,3,4功能判断先后顺序 if choice.upper() == "Q": print(dic) break elif choice.isdigit() and int(choice) in dic.keys(): print(dic[int(choice)]) dict[int(choice)] = dic[int(choice)] else: print("输入信息有误,请重新输入")用字典实现


li = ["手机", "电脑", '鼠标垫', '游艇'] dict = {} while True: for i in range(0,len(li)): print(i+1,li[i]) order = (input("请输入序号1到"+str(len(li))+ ",输入Q或q退出").strip()) if order.upper() == "Q": print("您选择的商品列表如下:\n",dict) break elif order.isdigit() and int(order) in range(0,len(li)): print("商品名称为:" + li[int(order) - 1]) dict[order] = li[int(order) - 1] else: print("输入有误,请重新输入")依赖现有列表实现