python基础-day05-字典&列表&集合 作业Ver2.0

今日作业

字典练习

  • 题目一:

    1. 将列表中大于等于66的元素放入字典k1键对应的列表中
        将列表中小于66的元素放入字典k2键对应的列表中
            nums=[11,22,33,44,55,66,77,88,99,90]
            dic={
                'k1':[],
                'k2':[]
            }
    
  • 解题思路

    • 关键点

      1. 对比nums列表中的元素与数字66的关系(>= or <)
      2. 对比后的元素怎么装填到dic字典内的'k1[]'、'k2[]'列表中去
      
    • 详细思路

      1. 设置变量 i 采用for循环依次将nums列表中的元素赋值给i;
      2. 利用 if 判断 i 是否 >= 66,如果成立则将 i 增加到一个空白列表中(空白变量预先定义)
         否则(else)就将 i 增加到另外一个空白列表中(预先定义)
      3. 将新得到的两个列表分别赋值给dic字典中的 'k1[]' 和 'k2[]'
      
  • 代码实现:

    nums = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    dic = {'k1': [],
           'k2': []
           }
    l1 = []
    l2 = []
    for i in nums:
        if i >= 66:
                l1.append(i)
                dic['k1'] = l1
        else:
                l2.append(i)
                dic['k2'] = l2
    print(dic)
    
  • 运行结果:

    {'k1': [66, 77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]}
    
  • 应用到的知识点

    1. 列表变量赋值
    	l1 = []
    	l2 = []
    2. 列表的循环读取
    	for i in nums:
    3. if 的流程控制
    	if i >= 66:
            l1.append(i)
            dic['k1'] = l1
        else:
            l2.append(i)
            dic['k2'] = l2
    4. 列表的尾部追增
    	 l1.append(i)
         l2.append(i)
    5. 字典value值得更改
    	 dic['k1'] = l1
         dic['k2'] = l2
    
  • 遗忘的知识点

    1. append() 列表的尾部追增
    
  • 老师的解法

    nums=[11,22,33,44,55,66,77,88,99,90]
    dic={
        'k1':[],
        'k2':[]
    }
    # 循环列表中每一个元素
    for i in nums:
        # 判断是否大于66
        if i >= 66:
            # res = dic['k1']  # 取k1键对应的列表
            # res.append(i)  # 将i追加到列表中
            dic['k1'].append(i)
        else:
            # res1 = dic['k2']  # 取k2键对应的列表
            # res1.append(i)  # 将i追加到列表中
            dic['k2'].append(i)
    print(dic)
    
  • 补充&提到的知识点

    
    
  • 题目二:

    s='hello jason jason say hello sb sb sb'    统计字符串中每个单词出现的次数    {'jason':2,...}
    
  • 解题思路

    • 关键点

      1. 单词2. 统计3. 字典的生成
      
    • 详细思路

      1. 字符串到单词的形式:用字符串str的内置方法 ".split()"对原有字符串进行分割,生成新的列表形式 "new_s"2. 去除重复单词,得到核心单词(去重):用for循环和if判断出核心单词,用 ".append()"将去重后的单词依次    追增到事先定义好的空列表中"new_list"3. 统计去重后的单词在原列表中出现的次数:再用for和if去重的同时用 ".count()"统计列表中重复单词的数量并    将得到的数用 ".append()"依次追增到一个新的列表 "new_list2"中4. 核心单词列表和重复数量的列表放到字典:用len(new_list)中单词的数量并配合range 和 for 循环生成一个作    为字典Key和value的索引值,然后以 dict[key] = dict[vaule]的形式,在循环中依次放入对应的数据
      
  • 代码实现:

    s = 'hello jason jason say hello sb sb sb'new_s = s.split(' ')new_list = []   # 盛装去重后的单词列表new_list2 = []  # 盛装统计后的数字形成列表new_dict = {}   #for i in new_s:    if i not in new_list:        new_list.append(i)        j = new_s.count(i)        new_list2.append(j)for k in range(len(new_list)):        new_dict[new_list[k]] = new_list2[k]print(new_s)  # 分割后的单词集(列表类型数据)print(new_list)   # 去重后的单词集print(new_list2)  # 单词重复的个数print(new_dict)   # 最终生成的字典
    
  • 运行结果:

    ['hello', 'jason', 'jason', 'say', 'hello', 'sb', 'sb', 'sb']['hello', 'jason', 'say', 'sb'][2, 2, 1, 3]{'hello': 2, 'jason': 2, 'say': 1, 'sb': 3}
    
  • 应用到的知识点

    1. 字符串的分割:str变量名.split()2. 列表数据的读取:for 循环3. 列表的创建 变量名 = []4. 字典的创建 变量名 = {}5. 流程控制 if6. 成员运算  in  not in7. 列表的追增  list.append()8. 字典key:value 一一对应追增9. 字典值的读取方式
    
  • 遗忘的知识点

    1. 字典的读取方式2. split() str分割 3. count() 元素计数4. append() 列表追增
    
  • 老师的解法

    s='hello jason jason say hello sb sb sb'res = s.split(' ')  # ['hello', 'jason', 'jason', 'say', 'hello', 'sb', 'sb', 'sb']d1 = {}for i in res:    if i not in d1:        d1[i] = 1  # 先初始化 'hello':1    else:        d1[i] += 1  # 在原有基础之上加一print(d1)
    
  • 其他同学的解法

    • 方法一

      """郭欣雨"""s='hello jason jason say hello sb sb sb'list1 = s.split(' ')list2 = []for word1 in list1:    if word1 not in list2:        list2.append(word1)dict1 = {}for word2  in list2:    count_num = list1.count(word2)    dict1[word2] = count_numprint(dict1)
      

      方法二

    """在老师解题思路上的优化————井富贵"""s='hello jason jason say hello sb sb sb'list1 = s.split(' ')dict1 = {}for i in list1:    dict1[i] = list1.count(i)print(dict1)
    
  • 补充&提到的知识点

    # 按照空格切割字符串"""字典里面的键不能重复"""
    

    集合练习

  • 题目三:

    3.1 关系运算    有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合    pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}    linuxs={'wupeiqi','oldboy','gangdan'}        要求:    3.1.1 求出即报名python又报名linux课程的学员名字集合    3.1.2 求出所有报名的学生名字集合    3.1.3 求出只报名python课程的学员名字    3.1.4 求出没有同时这两门课程的学员名字集合
    
    3.2 去重并且保留原来的顺序    l = [11,22,33,22,22,33,11,22,55,66,66,77,77]        要求:    3.2.1 去重不保留顺序    3.2.2 去重并且保留顺序
    
  • 解题思路

    • 关键点

      3.1 集合中的交集、并集的处理3.2 列表元素的读取
      
    • 详细思路

      3.1 用集合的内置方法实现(& 两个集合共有元素——交集;| 两个集合所有元素——合集;- A集合独有的元素;    ^ 共有元素之外的所有元素;3.2  	3.2.1   列表 转 集合,集合 转 列表     3.2.2     	1). for 循环 读出原有列表的元素,并追增赋值给新的列表        2). 列表类型直接转换成集合类型,集合类型直接去除重复的元素
      
  • ``代码实现:

    """3.1 关系运算    """pythons = {'alex', 'egon', 'yuanhao', 'wupeiqi', 'gangdan', 'biubiu'}linuxs = {'wupeiqi', 'oldboy', 'gangdan'}print(pythons & linuxs)  # & 共同  求出交集后生成新的集合print(pythons | linuxs)  # | 所有  去重后得到新的集合print(pythons - linuxs)  # - 单独一项  求得单选项得元素print(pythons ^ linuxs)  # ^ 共有之外共有之外各自集合的元素
    
    """ 3.2.1 去重不保留顺序"""l = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]l = set(l)l = list(l)print(l)orl = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]print(list(set(l)))
    
    """3.2.2 去重并且保留原来的顺序"""l = [11, 22, 33, 22, 22, 33, 11, 22, 55, 66, 66, 77, 77]new_list = []for i in l:    if i not in new_list:        new_list.append(i)print(new_list)new_set = set(l)print(new_set)
    
  • 运行结果:

    """3.1 关系运算"""{'wupeiqi', 'gangdan'}{'yuanhao', 'wupeiqi', 'gangdan', 'oldboy', 'egon', 'alex', 'biubiu'}{'egon', 'biubiu', 'alex', 'yuanhao'}{'alex', 'yuanhao', 'oldboy', 'egon', 'biubiu'}
    
    """ 3.2.1 去重不保留顺序"""[33, 66, 11, 77, 22, 55]
    
    """3.2.2 去重并且保留原来的顺序"""[11, 22, 33, 55, 66, 77]{33, 66, 11, 77, 22, 55}
    
  • 应用到的知识点

    1. 集合的内置方法:& | - ^2. for  循环3. 成员运算4. 集合类型转换
    
  • 遗忘的知识点

posted @ 2021-06-04 14:34  陈皮是味药  阅读(79)  评论(0)    收藏  举报