Day9 字典和集合
字典
列表套字典必须熟练掌握,用于Web开发
定义字典
d1 = {}
d2 ={“name”:"张三,“age”:15}
d3 = dict()
d3 = dict(a=3,b=4) #{“a”:3,“b”:4}
字典存取
d2[‘name’] #如果指定键不存在,会报错
d2[“age”]=16
d2.get(“name”,“1”) # 如果指定键不存在,不会报错。返回1,如果没有参数1,会返回默认值None
增删键值对
d2[“sex”] = “male”
d1.pop(“name”) #删除
d1.clear() #清空
d1.update(d2) #合并到d1
遍历字典
for key in d1:
print(key,d1[key]) #根据键进行遍历
d1.values() #获得所有的值
for value in d1.values():
print(value) #根据值遍历
for key in d1.keys():
print(key) #根据键遍历
#同时获取键值对
d1.items() #获得键值对
for key, value in d1.items():
print(key,value)
-
字典键值对个数
len(d1) -
判断键是否在字典中
“a” in d1 -
key in dict() #判断键是否在字典中,不判断值
-
判断值是否在字典中:
def judge_value(dict1, fvalue):
for key in dict1:
if dict1[key] == fvalue:
return True
else:
return False
集合–去重,和并交集运算
- 定义
s1 = {1,2,3,4}
s2 = set() # 空集合 # s2={}是空字典 - 去重
list = [1,2,3,4,2,1]
set(list) #去重 - 增加一个元素
s1.add(2) - 增加多个元素
s1.update([2,3,4]) #可迭代对象会打碎添加到集合中 - set无法修改
- set删除
s2.remove(3) #下标,元素不存在会报错
s2.pop() #随机删除,如果不存在会报错
s2.discard(3) #下标,元素不存在不会报错 - len
- in
并交差
s1 = {1,2,3}
s2 = {3,4}
- 并集
s1 | s2 #新集包含所有元素 {1,2,3,4} - 交集
s1 & s2 # 新集包含共有元素 {3} - 差集
s1-s2 # 前面的集合减去交集 {1,2,3}-{3} ={1,2}
初级课程总结:
类型转换 set() tuple() list() dict()
布尔值 所有空序列都为空
使用zip()来构造字典
dict(zip([“a”,“b”],[1,2])
choice随机返回一个元素
from random import choice,shuffle
choice(list1) #随机返回一个元素
shuffle打乱序列
list = [10,20,30]
shuffle(list) #把序列打乱 ,洗牌,无返回值
print(list) # 打印洗乱后的list
列表推导式 python特点,写法简化效率提高
- 用于创建新列表 (很方便,能用则用)
列表推导式创建偶数的列表
result = [value for value in list if value%2==0]
产生一个1-100的整数列表
print([value for x in range(0,101)])
洗牌
face = [“红心”,“黑桃”,“方块”,“梅花”]
value = [“A”,“1”…,“K”]
poke = [(x,y)for x in face for y in value]
shuffle(poke) - 注意事项:
– 列表推导式中,判断只能使用if语句,不能使用除if语句之外的其他语句,表达式可以是任何合法表达式。for循环后最多只能用一次if
print(randint(1,100) for i in range(10))
字典推导式
{key:value for key,value in iteral}
集合推导式
{express for value in iterial}
简易版购物车
- 商品如何存储
一件商品可以是字典表示,多种商品可以用列表套字典存储 - 购物车如何表示
作业
填空题
- 创建⼀一个空元组:t1=tuple()或_t1=()______;创建⼀一个具有⼀一个元素5的元组:t1 = (5,)____。
- 创建⼀一个空字典d: d = {};向d中添加⼀一个键值对(’a’:3)
d[“a”]=3___;d[‘a’] = 3______;d[‘b’] = 报错_______;d.get(‘b’,2) =
2;执⾏行行d[‘b’] = 5后,d = {“a”:3,“b”:5}_____。执⾏行行
d.update({1:3,2:4})后d={“a”:3,“b”:5,1:3,2:4}。 - d = {‘a’:1,’c’:5,’d’:9,’b’:10};则list(d.keys()) = [“a”,“c”,“d”,“b”];
list(d.values()) = [1,5,9,10];list(d.items()) = [(‘a’,1),(‘c’,5),(‘d’,9),(‘b’,10)]________; - 执⾏行行a,b,c = ‘123’后,a=“1”;b= “2”___;c= “3”___。
- 执⾏行行*a,b,c = 1,2,3,4,5,6后,a=[1,2,3,4];b=5;c = 6_。
- 执⾏行行a , b , c = { " h e l l o " : 1 0 , " w o r l d " : 2 0 , " 你好" : ’ 世界’ } 后,
a=“hello”;b="world";c=“你好”___。 - 执⾏行行a,*b,c = [1,2,3,4,5,6]后,a=1___;b=[2,3,4,5]_;c=6。
- a=[2,5,3,9,6],则执⾏行行a,b,*c = a.sort(reverse=True)后,a = TypeError: ‘NoneType’ object is not iterable;b=TypeError: ‘NoneType’ object is not iterable___。
- 已知a = {1,2,3,3,4,5},执⾏行行a.add(4)后,a = {1,2,3,4,5};执⾏行行
a.remove(2)后a=__{1,3,4,5};执⾏行行a = a – {1,2,3}后a={4,5};a =
a | {1,2,6,7}后a={1,2,4,5,6,7};执⾏a = a & {1,3,5}后a = {1,5}。
10.执⾏行行a=[x for x in range(10) if x%3]后,a=【1,2,4,5,7,8】。
11.执⾏行行a = [5 for x in range(5)]后a = 【5,5,5,5,5】。
12.a=[2,4,9,5,9,8,1],表达式[index for index,value in enumerate(a) if value
== max(a)]的值为:[2,4]。
13.a=[[1,3,5],[2,4,6]],则表达式[x for elem in a for x in elem]的值为:[1,3,5,2,4,6]。
14.a=[2,3,4,1,6,9,8],执⾏行行b = [index for index, value in enumerate(a) if
value>3]后,b=[2,4,5,6]。
15.x=’abcde’, y=’adcbe’;则执⾏行行a= [m==n for m,n in zip(x,y)]后,
a=[True, False, True, False, True]。
16.表达式[1]+[2] = [1,2];(1,)+(3,)=(1,3)_____; (1) + (2) = (3)。
17.a = {‘a’:10,’b’:3,’c’:5},则sum(list(a.values())) = 18_。
18.请定义空列列表:a=[]; 空元组:a=(); 空集合:a=set(); 空字典:
a={}_。