博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础五--dict
阅读量:6838 次
发布时间:2019-06-26

本文共 5706 字,大约阅读时间需要 19 分钟。

一、昨日内容回顾

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-yyyy#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:            continueprint(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'

改:

直接指定键和值修改,等同于新增已存在的keydict_update = {'name': 'liyan','age': 18,'sex': 'man'}dict_update['age'] = 25print(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:输出字典所有的keydict_select = {'name': 'liyan','age': 18,'sex': 'man'}print(dict_select.keys(), type(dict_select.keys())) >>> dict_keys(['name', 'age', 'sex']) 
values:输出字典所有的value dict_select = { 'name': 'liyan', 'age': 18, 'sex': 'man' } print(dict_select.values(), type(dict_select.values())) >>> dict_values(['liyan', 18, 'man'])
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')])

 

转载于:https://www.cnblogs.com/TheLand/p/8073896.html

你可能感兴趣的文章
Ubuntu架设FTP
查看>>
探索.NET中事件机制(续)——虚事件和事件重写问题,微软的Bug?!
查看>>
转载:关于错排的相关知识
查看>>
电子商务中遇到组合搜索的问题
查看>>
appium+python搭建自动化测试框架_TestAPP框架(三)
查看>>
jquery实现后台系统左侧菜单的点击展开/收缩二级菜单效果
查看>>
A*算法 javascript模拟
查看>>
ruby 正则表达式Regexp
查看>>
Java 如何使用radio button保存值
查看>>
我和奇葩的故事之失联第七天
查看>>
NAT网络地址转换
查看>>
DateTime格式化问题
查看>>
mysql连接错误
查看>>
vagrant学习记录
查看>>
【人生】新年伊始
查看>>
杭电2097--Sky数
查看>>
杭电1754--I Hate It(线段树)
查看>>
AS莫名报错 Error:Could not download junit.jar (junit:junit:4.12): No cached version available
查看>>
Kendo UI 简单使用
查看>>
FCKeditor的使用说明
查看>>