zoukankan      html  css  js  c++  java
  • python基础五--dict

    一、昨日内容回顾

    1、 列表: 

     

    insert:按照指定下标插入
    append:在列表最后增加
    extend:迭代式的增加到列表的最后,相当于列表扩展  

    pop:根据指定下标删除,返回删除的元素,如果元素不存在会报错
    remove:根据元素名删除与之匹配的第一个元素,无返回值,如果不存在会报错
    clear:清空列表
    del:根据元素下标或切片的方式删除,也可以直接删除整个列表
    

    改:

    根据元素下标修改
    根据切片修改(先删除切片指定的范围,然后在以迭代的方式插入到切片位置) 

    根据元素下标查询
    根据切片查询
    根据循环查询

    其他方法:

    len:统计列表元素的总个数
    conut:统计指定字符或字符串在列表中出现的元素个数
    index:获取指定元素的下标,支持切片,若不存在会报错
    sort:排序,默认是正序。(若sort的reverse属性为True时,进行倒序排序,默认revers的属性是False)
    reserver:反转
    

    2、元组:

    元组又叫做只读列表
    元组中的列表可以修改 元组中的元组也不能修改 元组支持切片

    3、 range:

    python2中使用xrange的方法,python3中使用range,两者使用方法一模一样。

    4、join:按照指定的连接符把可迭代对象分隔开,不指定连接符默认无缝连接,可支持切片

    name_list = ['yange', 'yy', 'li', 'yan', 'liyan', 'yy']
    new_list1 = '-'.join(name_list)
    new_list2 = '#'.join(name_list[1:4])
    print(new_list1)
    print(new_list2)
    >>>
    yange-yy-li-yan-liyan-yy
    yy#li#yan

    二、重点作业讲解

    5,查找列表li中的元素,移除每个元素的空格,并找出以’A’或者’a’开头,并以’c’结尾的所有元素,并添加到一个新列表中,最后循环打印这个新列表。

    方法一:
    
    li = ['taibai ', 'alexC', 'AbC ', 'egon', ' Ritian', ' Wusir', '  aqc']
    new_li = []
    for i in li:
        i = i.strip()
        if i.lower().startswith('a') and i[-1] == 'c':
            new_li.append(i)
    print(new_li)
    View Code
    方法二:
    li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir','  aqc']
    lis =[]
    for i in li:
        a =i.strip()
        if a.startswith('A') or a.startswith('a') :
            if a.endswith('c'):
                lis.append(a)
            else:
                continue
    print(lis)
    View Code

    6、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。

    将所有敏感词替换成'***'
    info=input("请输入您的评论:")
    li=["苍老师","东京热","武藤兰","波多野结衣"]
    new_li=[]
    for i in li:
        if li.index(i)!=-1:
            info=info.replace(i,"***")
    l1=new_li.append(info)
    print(new_li)
    View Code

    将所有敏感词替换成对应数量的*

    li = ["苍老师","东京热","武藤兰","波多野结衣"]
    new_li = []
    info = input('请输入你的评论:')
    for i in li:
        if info.find(i) != -1:
            l = len(i)
            info = info.replace(i,'*'*l)
    new_li.append(info)
    print(new_li)
    View Code

    将所有敏感词替换成对应数量的*

    info=input("请输入您的评论:")
    li=["苍老师","东京热","武藤兰","波多野结衣"]
    new_li=[]
    for i in li:
         if li.index(i)!=-1:
              l = len(i)
         info = info.replace(i,'*'*l)
    l1=new_li.append(info)
    print(new_li)
    View Code

    三、今日内容讲解

    1、字典的描述:

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

    2、字典的特点: 

    字典是python中唯一一个映射的数据类型
    字典是无序的
    字典的数据关联性强
    字典是键值对存储方式
    字典的key必须是可哈希hash的(不可变的数据类型)
    字典的key必须是唯一的
    字典天生去重 若字典的key重复时,后面的会覆盖前面的键值

    3、字典的操作:

    增:

    直接指定键值添加,如果key已存在,则覆盖(或叫修改)
    dict_insert = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    dict_insert['job'] = 'IT'
    print(dict_insert)
    dict_insert['age'] = 20
    print(dict_insert)
    >>>
    {'name': 'liyan', 'age': 18, 'sex': 'man', 'job': 'IT'}
    {'name': 'liyan', 'age': 20, 'sex': 'man', 'job': 'IT'}
    
    setdefault:指定键值对添加,如果不指定value,则值为none,如果所添加的key已存在,则不做任何操作
    
    dict_insert = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    dict_insert.setdefault('job')
    print(dict_insert)
    dict_insert.setdefault('age', '20')
    print(dict_insert)
    >>>
    {'name': 'liyan', 'age': 18, 'sex': 'man', 'job': None}
    {'name': 'liyan', 'age': 18, 'sex': 'man', 'job': None}

    删:

    pop:根据键删除键值对,返回key所对应的value,如果key不存在会报错 ,报错信息可以自定义

      dict_delete = { 'name': 'liyan', 'age': 18, 'sex': 'man' }

      print(dict_delete.pop('sex'))

      print(dict_delete)

      print(dict_delete.pop('aaa', '返回这个'))

      print(dict_delete.pop('aaa'))

      >>> man {'name': 'liyan', 'age': 18}

      返回这个

      KeyError: 'aaa'

    popitem:随机删除一组键值对,并返回删除的结果

      dict_delete = { 'name': 'liyan', 'age': 18, 'sex': 'man' }

      print(dict_delete.popitem())

      print(dict_delete)

      >>> ('sex', 'man')

      {'name': 'liyan', 'age': 18}

    clear:清空字典

      dict_delete = { 'name': 'liyan', 'age': 18, 'sex': 'man' }

      print(dict_delete.clear())

      print(dict_delete)

      >>> None

       {}

    del:根据键删除键值对,没有返回值,如果key不存在会报错

      dict_delete = { 'name': 'liyan', 'age': 18, 'sex': 'man' }

      del dict_delete['name']

      print(dict_delete)

      del dict_delete['aaa']

      print(dict_delete)

      >>> {'age': 18, 'sex': 'man'}

         KeyError: 'aaa'

    改:

    直接指定键和值修改,等同于新增已存在的key
    dict_update = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    dict_update['age'] = 25
    print(dict_update)
    >>>
    {'name': 'liyan', 'age': 25, 'sex': 'man'}
    
    update:把一个字典的键值对以覆盖的方式添加到另一个字典中(key存在时则覆盖,key不存在时则添加)
    
     dict_update1 = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    dict_update2 = {
    'job': 'IT',
    'name': 'yy'
    }
    print(dict_update1)
    dict_update1.update(dict_update2)
    print(dict_update1)
    print(dict_update2)
    dict_update2.update(dict_update1)
    print(dict_update1)
    print(dict_update2)
    >>>
    {'name': 'liyan', 'age': 18, 'sex': 'man'}
    {'name': 'yy', 'age': 18, 'sex': 'man', 'job': 'IT'}
    {'job': 'IT', 'name': 'yy'}
    {'name': 'yy', 'age': 18, 'sex': 'man', 'job': 'IT'}
    {'job': 'IT', 'name': 'yy', 'age': 18, 'sex': 'man'}

    查:

    根据键名查找对应的值,如果key不存在会报错
    dict_select = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    print(dict_select['name'])
    print(dict_select['aaa'])
    >>>
    liyan
    KeyError: 'aaa'
    
    get:根据键名查找,如果key存在返回对应的value,如果key不存在则返回None,返回信息可以自定义
    
    dict_select = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    print(dict_select.get('name'))
    print(dict_select.get('aaa'))
    print(dict_select.get('aaa', '找不到返回这个'))
    >>>
    liyan
    None
    找不到返回这个

    其他操作:

    keys:输出字典所有的key
    
    dict_select = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    print(dict_select.keys(), type(dict_select.keys()))
    >>>
    dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
    values:输出字典所有的value
    
    dict_select = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    print(dict_select.values(), type(dict_select.values()))
    >>>
    dict_values(['liyan', 18, 'man']) <class 'dict_values'>
    items:把字典的每个键值对以元组的方式输出
    
    dict_select = {
    'name': 'liyan',
    'age': 18,
    'sex': 'man'
    }
    print(dict_select.items(),type(dict_select.items()))
    >>>
    dict_items([('name', 'liyan'), ('age', 18), ('sex', 'man')]) <class 'dict_items'>
  • 相关阅读:
    Java基础之线程最详细最精简的介绍
    Android基础之Android硬件
    Iphone客户端程序员半年工作总结
    Java基础之synchronized的讲解
    物联网能否落地?可裁剪嵌入式OS成关键
    java基础之Thread与Runnable的区别
    Android基础之小问题集锦
    Java基础之字符串匹配大全
    BPM 是与非 什么是BPM,如何辨别是否BPM产品,以及如何选择BPM产品
    Hello China操作系统的安装和使用
  • 原文地址:https://www.cnblogs.com/TheLand/p/8073896.html
Copyright © 2011-2022 走看看