一、昨日内容回顾

1、 列表:

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

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

改:

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

  1. 根据元素下标查询
  2. 根据切片查询
  3. 根据循环查询

其他方法:

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

2、元组:

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

3、 range:

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

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

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

二、重点作业讲解

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

  1. 方法一:
  1. li = ['taibai ', 'alexC', 'AbC ', 'egon', ' Ritian', ' Wusir', ' aqc']
  2. new_li = []
  3. for i in li:
  4. i = i.strip()
  5. if i.lower().startswith('a') and i[-1] == 'c':
  6. new_li.append(i)
  7. print(new_li)
  1. 方法二:
  1. li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc']
  2. lis =[]
  3. for i in li:
  4. a =i.strip()
  5. if a.startswith('A') or a.startswith('a') :
  6. if a.endswith('c'):
  7. lis.append(a)
  8. else:
  9. continue
  10. print(lis)

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

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

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

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

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

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

三、今日内容讲解

1、字典的描述:

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

2、字典的特点:

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

3、字典的操作:

增:

  1. 直接指定键值添加,如果key已存在,则覆盖(或叫修改)
  2. dict_insert = {
  3. 'name': 'liyan',
  4. 'age': 18,
  5. 'sex': 'man'
  6. }
  7. dict_insert['job'] = 'IT'
  8. print(dict_insert)
  9. dict_insert['age'] = 20
  10. print(dict_insert)
  11. >>>
  12. {'name': 'liyan', 'age': 18, 'sex': 'man', 'job': 'IT'}
  13. {'name': 'liyan', 'age': 20, 'sex': 'man', 'job': 'IT'}
  14.  
  15. setdefault:指定键值对添加,如果不指定value,则值为none,如果所添加的key已存在,则不做任何操作
  16.  
  17. dict_insert = {
  18. 'name': 'liyan',
  19. 'age': 18,
  20. 'sex': 'man'
  21. }
  22. dict_insert.setdefault('job')
  23. print(dict_insert)
  24. dict_insert.setdefault('age', '20')
  25. print(dict_insert)
  26. >>>
  27. {'name': 'liyan', 'age': 18, 'sex': 'man', 'job': None}
  28. {'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'

改:

  1. 直接指定键和值修改,等同于新增已存在的key
  2. dict_update = {
  3. 'name': 'liyan',
  4. 'age': 18,
  5. 'sex': 'man'
  6. }
  7. dict_update['age'] = 25
  8. print(dict_update)
  9. >>>
  10. {'name': 'liyan', 'age': 25, 'sex': 'man'}
  11.  
  12. update:把一个字典的键值对以覆盖的方式添加到另一个字典中(key存在时则覆盖,key不存在时则添加)
  13.  
  14. dict_update1 = {
  15. 'name': 'liyan',
  16. 'age': 18,
  17. 'sex': 'man'
  18. }
  19. dict_update2 = {
  20. 'job': 'IT',
  21. 'name': 'yy'
  22. }
  23. print(dict_update1)
  24. dict_update1.update(dict_update2)
  25. print(dict_update1)
  26. print(dict_update2)
  27. dict_update2.update(dict_update1)
  28. print(dict_update1)
  29. print(dict_update2)
  30. >>>
  31. {'name': 'liyan', 'age': 18, 'sex': 'man'}
  32. {'name': 'yy', 'age': 18, 'sex': 'man', 'job': 'IT'}
  33. {'job': 'IT', 'name': 'yy'}
  34. {'name': 'yy', 'age': 18, 'sex': 'man', 'job': 'IT'}
  35. {'job': 'IT', 'name': 'yy', 'age': 18, 'sex': 'man'}

查:

  1. 根据键名查找对应的值,如果key不存在会报错
  2. dict_select = {
  3. 'name': 'liyan',
  4. 'age': 18,
  5. 'sex': 'man'
  6. }
  7. print(dict_select['name'])
  8. print(dict_select['aaa'])
  9. >>>
  10. liyan
  11. KeyError: 'aaa'
  12.  
  13. get:根据键名查找,如果key存在返回对应的value,如果key不存在则返回None,返回信息可以自定义
  14.  
  15. dict_select = {
  16. 'name': 'liyan',
  17. 'age': 18,
  18. 'sex': 'man'
  19. }
  20. print(dict_select.get('name'))
  21. print(dict_select.get('aaa'))
  22. print(dict_select.get('aaa', '找不到返回这个'))
  23. >>>
  24. liyan
  25. None
  26. 找不到返回这个

其他操作:

  1. keys:输出字典所有的key
  2.  
  3. dict_select = {
  4. 'name': 'liyan',
  5. 'age': 18,
  6. 'sex': 'man'
  7. }
  8. print(dict_select.keys(), type(dict_select.keys()))
  9. >>>
  10. dict_keys(['name', 'age', 'sex']) <class 'dict_keys'>
  11. values:输出字典所有的value
  12.  
  13. dict_select = {
  14. 'name': 'liyan',
  15. 'age': 18,
  16. 'sex': 'man'
  17. }
  18. print(dict_select.values(), type(dict_select.values()))
  19. >>>
  20. dict_values(['liyan', 18, 'man']) <class 'dict_values'>
  21. items:把字典的每个键值对以元组的方式输出
  22.  
  23. dict_select = {
  24. 'name': 'liyan',
  25. 'age': 18,
  26. 'sex': 'man'
  27. }
  28. print(dict_select.items(),type(dict_select.items()))
  29. >>>
  30. dict_items([('name', 'liyan'), ('age', 18), ('sex', 'man')]) <class 'dict_items'>

python基础五--dict的更多相关文章

  1. python基础之dict、set及字符

    python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射类型,采用键值对(key-value)的形式存 ...

  2. python基础——使用dict和set

    python基础——使用dict和set dict Python内置了字典:dict的支持,dict全称dictionary,在其它语言中也称为map(映射),使用键-值(key-value)存储,具 ...

  3. 第四篇:python基础之dict、set及字符

    python基础之dict.set及字符   python基础之dict.set及字符串处理 本节内容 字典介绍及内置方法 集合介绍 字符串处理 1.字典介绍及内置方法 字典是python中唯一的映射 ...

  4. Python基础之dict和set的使用

    dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言种也称为map,使用键-值(key-value)存储,具有极快的查找速度. 举个例子,假设要根据同学的名字 ...

  5. Python基础(五) python装饰器使用

    这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表示调用了两次 ...

  6. Python基础:字典(dict)与集合(set)

    查找场景下与列表的性能对比 字典与集合之所以高效的原因是:内部结构都是一张哈希表. 平均情况下插入.查找和删除的时间复杂度为 O(1). 假设有数量100,000的产品列表: import time ...

  7. Python - 基础数据类型 dict 字典

    字典简介 字典在 Python 里面是非常重要的数据类型,而且很常用 字典是以关键字(键)为索引,关键字(键)可以是任意不可变类型 字典由键和对应值成对组成,字典中所有的键值对放在 { } 中间,每一 ...

  8. python基础五

    列表生成式 将列表data=[1,2,3]里的元素都乘2 方法一 data=[1,2,3] for index,i in enumerate(data): data[index] *=2 print( ...

  9. python基础教程——dict和set

    dict python内置字典:dict,全称dictionary,在其他语言中称为map,使用键值对存储. ex: d = {'xiaoli' : 95 , 'xiaoming' : 98 , 'x ...

随机推荐

  1. MapReduce排序

    在map和reduce阶段进行排序时,比较的是k2.v2是不参与排序比较的.如果要想让v2也进行排序,需要把k2和v2组装成新的类,作为k2,才能参与比较. 例子: 二次排序:在第一列有序得到前提下第 ...

  2. intel笔记本cpu型号后缀详解(M,U,QM,MQ,HQ,XM)

    M:笔记本专用CPU,一般为双核,M前面一位数字是0,意味着是标准电压处理器,如果是7,则是低电压处理器. U:笔记本专用低电压CPU,一般为双核,U前面一位数字为8,则是28W功耗的低压处理器(标准 ...

  3. Oracle卸载之Linux下卸载oracle11g的方法

    1.使用SQL*PLUS停止数据库  如果不能通过sysdba登陆可以用nolog用户登陆后切换至sysdba [oracle@OracleTest oracle]$ sqlplus /nolog S ...

  4. 希尔排序之python

    希尔排序( Shell sort) 插入排序的改进版本,其核心思想是将原数据集合分割成若干个子序列,然后再对子序列分别进行直接插入排序,使子序列基本有序,最后再对全体记录进行一次直接插入排序. 我的面 ...

  5. 2018/03/28 每日一个Linux命令 之 mkdir/rmdir

    用于建立空文件夹和删除文件夹 -- 两命令重要参数 -p 递归建立/删除 -- 例如 mkdir -p demo1/demo2/demo3 建立demo3空文件夹,如果demo1/demo2没建立也建 ...

  6. Qt中容器类应该如何存储对象(对象加入到容器时会发生拷贝,容器析构时,容器内的对象也会析构)

    Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...

  7. on条件与where条件的区别(转)

    add by zhj: 以为一直以为on和where是等价于,直到看到这篇文章,并亲自测试,才知道原来他们的功能不一样. 可以这样理解:on是在生成连接表的起作用的,where是生成连接表之后对连接表 ...

  8. 64位windows 7下配置TortoiseGit(转)

    原文:http://our2848884.blog.163.com/blog/static/146854834201152325233854/ 最近感觉自己电脑上的代码太乱了,东一块.西一块……于是决 ...

  9. LeetCode 第 342 题(Power of Four)

    LeetCode 第 342 题(Power of Four) Given an integer (signed 32 bits), write a function to check whether ...

  10. Memory consumption of popular Java data types

    http://java-performance.info/memory-consumption-of-java-data-types-2/ 如何在Java中分配超过-Xmx限制的内存 http://i ...