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}

简易版购物车

  1. 商品如何存储
    一件商品可以是字典表示,多种商品可以用列表套字典存储
  2. 购物车如何表示

作业

填空题

  1. 创建⼀一个空元组:t1=tuple()或_t1=()______;创建⼀一个具有⼀一个元素5的元组:t1 = (5,)____。
  2. 创建⼀一个空字典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}。
  3. 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)]________;
  4. 执⾏行行a,b,c = ‘123’后,a=“1”;b= “2”___;c= “3”___。
  5. 执⾏行行*a,b,c = 1,2,3,4,5,6后,a=[1,2,3,4];b=5;c = 6_。
  6. 执⾏行行a , b , c = { " h e l l o " : 1 0 , " w o r l d " : 2 0 , " 你好" : ’ 世界’ } 后,
    a=“hello”;b="world";c=“你好”___。
  7. 执⾏行行a,*b,c = [1,2,3,4,5,6]后,a=1___;b=[2,3,4,5]_;c=6
  8. 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___。
  9. 已知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={}
    _。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值