字典的定义-dict

字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成,字典是无序的,key是不可修改的.dic = {1:'好',2:'美',3:'啊'}

字典的操作

dic[键] = '值'  若键存在,则是修改,不存在则是增加

dic = {1:'好',2:'美',3:'啊'}
dic[4] = '哈哈'   # 4这个key值不存在,所以新增
print(dic)
输出结果:{1: '好', 2: '美', 3: '啊', 4: '哈哈'}
dic[4] = '你笑啥' # 4这个key值存在,所以修改
print(dic)
输出结果:{1: '好', 2: '美', 3: '啊', 4: '你笑啥'}
dic.setdefault(key,value),若只有key,代表查询,若对应有值,返回值,无值时候返回None

dic = {1:'好',2:'美',3:'啊'}
dic.setdefault(4)
print(dic)
返回结果:{1: '好', 2: '美', 3: '啊', 4: None}
dic = {1:'好',2:'美',3:'啊'}
dic.setdefault(4,'hahh')
print(dic)
返回结果:{1: '好', 2: '美', 3: '啊', 4: 'hahh'}
dic.fromkeys('可迭代对象',值)如果值是列表,是可变的那么如果更改列表中的值会影响整个字典键中的值.

dic = {}
lst = ['hello','world']
dic = dic.fromkeys(lst,[1,2,3,4])
print(dic)
dic['hello'].append(5)
print(dic)
输出结果:  #列表是可变的,所以在输出的结果中都发生了变化
{'hello': [1, 2, 3, 4], 'world': [1, 2, 3, 4]}
{'hello': [1, 2, 3, 4, 5], 'world': [1, 2, 3, 4, 5]}
dic = {}
lst = ['hello','world']
dic = dic.fromkeys(lst,'he')
print(dic)
dic['hello'] = dic['hello'] + 'l'
print(dic)
输出结果:
{'hello': 'he', 'world': 'he'}
{'hello': 'hel', 'world': 'he'}

del dic 删除整个列表
del dic[key] 根据key值删除
dic.pop(key,"不存在是可显示提示语")

dic = {1:'好',2:'美',3:'啊'}
print(dic.pop(2))# 可返回删除的值
print(dic.pop(5,"找不到呀"))#找不到时会报错,可在括弧第二个区域输入提示语句
popitem():没有参数,返回值是被删除的键值对,Python3.6以上版本删除最后一项键值对,其它版本是随机删除一组键值对.
dic.clear() 清除,跟列表用法一样

dic[key] = 新值 key存在的情况下就是改
dic.update()

dic = {1:'好',2:'美',3:'啊'}
dic1 = {1:'不好',5:'哈哈'}
dic.update(dic1)#根据括弧里面的修改,若有就改,没有就新增
print(dic)
运行结果:{1: '不好', 2: '美', 3: '啊', 5: '哈哈'}

print(dic[key]) 通过键来查
dic.setdefault 当key值存在时就是查
dic.get(key,'返回不存在的提示语')

dic = {1:'好',2:'美',3:'啊'}
print(dic.get(3))
print(dic.get(5,'没有啊'))# 若不存在则返回None,可添加提示语
运行结果:
啊
没有啊

字典的其他操作

dic.keys()
dic.items()
dic.items()

dic = {1:'好',2:'美',3:'啊'}
print(dic.keys())          #高仿列表 结果是元组
print(dic.values())        #高仿列表 结果是元组
print(dic.items())         #元组形式
不能使用下标
输出结果:
dict_keys([1, 2, 3])
dict_values(['好', '美', '啊'])
dict_items([(1, '好'), (2, '美'), (3, '啊')])

字典的嵌套

不再详述

集合的定义-set

set集合是python的⼀个基本数据类型. ⼀般不是很常⽤. set中的元素是不重复的.⽆序的.⾥ ⾯的元素必须是可hash的(int, str, tuple,bool), 我们可以这样来记. set就是dict类型的数据但 是不保存value, 只保存key. set也⽤{}表⽰
注意:注意: set集合中的元素必须是可hash的, 但是set本⾝是不可hash得.set是可变的.
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典的,还有set集合的值必须是不可变的
例如: se = set()
如:整型,字符串,元祖.不能是列表,字典等可被修改的数据

集合的操作

se.add(值)

se = {0,1,2,'h','lol',(1,2)}
se.add(3)
print(se)
运行结果:{0, 1, 2, (1, 2), 3, 'lol', 'h'}
se.update('可迭代对象') 迭代更新

se = {1,2,'ha','lal',4}
msg = '你好啊'
se.update(msg)#迭代更新,跟dic.fromlkeys()有点像
print(se)
运行结果:{1, 2, '你', 4, '好', '啊', 'lal', 'ha'}

del se 删除整个列表
se.pop() 随机删除

se = {1,2,'ha','lal',0,4}
se.pop()
print(se)
运行结果:{1, 2, 4, 'lal', 'ha'}
se.remove(元素)

se = {1,2,'ha','lal',0,4}
se.remove(1)
print(se)
运行结果:{0, 2, 4, 'ha', 'lal'}

集合的其他操作

交集

两个集合里面都存在的数据,可以使用&或者使用函数intersection来获取两个集合的交集.

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se & se1)
print(se.intersection(se1))

并集

将两个集合进行合并,如果两个元素相同合并一个城元素,如果两个元素不相同就添加进来.使用|符号或者使用union()函数

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se | se1)
print(se.union(se1))

差集

用第一个集合减去第二个集合里共同存在的元素.使用符号-或者使用函数difference()来实现

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se - se1)
print(se.difference(se1))
输出结果:{2}

反交集

将两个集合进行合并,并去除相同的元素,使用符号^或者symmetric_difference

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se ^ se1)
print(se.symmetric_difference(se1))
运行结果:{2, 3}

子集

一个集合是否在另一个集合中,也就是一个集合是否被另一个集合所包含.如果被另一个集合包含返回True,否则返回False.使用<符号或者issubset()

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se < se1)
print(se.issubset(se1))
运行结果:False

超级

与子集相反,判断一个集合是否包含另一个集合,如果包含另一个集合返回True否则返回False.使用符号>或者issuperset()

se = {1,2,'ha','lal',0,4}
se1 =  {1,3,'ha','lal',0,4}
print(se > se1)
print(se.issuperset(se1))
运行结果:False

forzenset(可迭代对象)

返回一个冻结的集合.被冻结的集合不能进行修改,删除,添加等操作.如果不写参数,则返回一个冻结的空的集合.参数是可迭代对象所以可以是列表,字典等

se = {1,2,'ha','lal',0,4}
lst = [1,2,3,4]
dic = {1:'hao',2:'buhao'}
se1 = frozenset(se)
lst1 = frozenset(lst)
dic1 = frozenset(dic)
print(se1)
print(lst1)
print(dic1)
运行结果:
frozenset({0, 1, 2, 'ha', 4, 'lal'})
frozenset({1, 2, 3, 4})
frozenset({1, 2})

Python之路-基础数据类型之字典 集合的更多相关文章

  1. 百万年薪python之路 -- 基础数据类型的补充

    基础数据类型的补充 str: 首字母大写 name = 'alexdasx' new_name = name.capitalize() print(new_name) 通过元素查找下标 从左到右 只查 ...

  2. Python之路-基础数据类型之列表 元组

    列表的定义 列表是Python基础数据类型之一,它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型: lst = [1,2,'你好','num'] 列表的索引和切片 与字符串类似, ...

  3. 百万年薪python之路 -- 基础数据类型的补充练习

    1.看代码写结果 v1 = [1,2,3,4,5] v2 = [v1,v1,v1] v1.append(6) print(v1) print(v2) [1,2,3,4,5,6] [[1,2,3,4,5 ...

  4. python之路--基础数据类型的补充与深浅copy

    一 . join的用法 lst =['吴彦祖','谢霆锋','刘德华'] s = '_'.join(lst) print(s) # 吴彦祖_谢霆锋_刘德华 # join() "*" ...

  5. Python之路-基础数据类型之字符串

    字符串类型 字符串是不可变的数据类型 索引(下标) 我们在日常生活中会遇到很多类似的情况,例如吃饭排队叫号,在学校时会有学号,工作时会有工号,这些就是一种能保证唯一准确的手段,在计算机中也是一样,它就 ...

  6. Python基础数据类型之字典

      基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...

  7. Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)

    Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...

  8. Python基础学习Day7 基础数据类型的扩展 集合 深浅copy

    一.基础数据类型的扩展 1.1GBK ---> UTF - 8 # str --->bytes s1 = '太白' # 字符串是unicode编码 b1 = s1.encode('gbk' ...

  9. python变量与基础数据类型

    一.什么是变量 变量是什么?  变量:把程序运行的中间结果临时的存在内存里,以便后续的代码调用.在python中一切都是变量. 1.python变量命名的要求 1,必须有数字,字母,下划线任意组合. ...

随机推荐

  1. DRF教程5-API接口文档和接口测试

    配置 配置好,就可以访问web页面 pip install coreapi #安装依赖 from rest_framework.documentation import include_docs_ur ...

  2. EM算法(徐亦达)笔记

  3. [软件工程基础]2017.11.03 第七次 Scrum 会议

    具体事项 项目交接燃尽图 每人工作内容 成员 已完成的工作 计划完成的工作 工作中遇到的困难 游心 #10 搭建可用的开发测试环境:#9 阅读分析 PhyLab 后端代码与文档:#8 掌握 Larav ...

  4. python学习之邮件

    分类smtp邮件 html邮件,带附件的邮件. 一 STTP邮件:设置SMTP代理机构,发送人的邮箱和密码,收件人的邮箱地址(email模块):接收端,发送(smtplib模块).SMTP(smtp_ ...

  5. web移动端滑动插件

    1.slip只有6.3k可以说是非常小了,主要是通过css3里面的transform来改变的位置,控制的是父容器,使用也非常简单,具体信息移步slip.js.一个简单的demo如下 <!DOCT ...

  6. Linux 安装reids

    1.下载: wget http://download.redis.io/releases/redis-3.0.0.tar.gz 2.解压: .tar.gz 3.安装: cd /redis- make ...

  7. DBAplus社群线上分享----Sharding-Sphere之Proxy初探

    功能 Cobar Mycat Heisenberg Shark TDDL Sharding-JDBC 是否开源 开源 开源 开源 开源 部分开源 开源 架构模型 Proxy架构 Proxy架构 Pro ...

  8. 生产环境如何快速跟踪、分析、定位问题-Java

    我相信做技术的都会遇到过这样的问题,生产环境服务遇到宕机的情况下如何去分析问题?比如说JVM内存爆掉.CPU持续高位运行.线程被夯住或线程deadlocks,面对这样的问题,如何在生产环境第一时间跟踪 ...

  9. SQL注入原理与解决方法代码示例

    一.什么是sql注入? 1.什么是sql注入呢? 所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网 ...

  10. Web开发入门不得不看章

    引 如今,各种互联网的Web应用程序层出不穷,那么如何快速入门,成长为一个优秀的Web开发工作者呢? 这个问题不容易回答,几乎所有的培训机构都不能清晰地解答. 所以对于Web开发刚刚入门的菜鸟们,我觉 ...