一 字典的相关函数

1.1 增函数

dictvar = {"a":1,"b":2}
dictvar["c"] = 3
print(dictvar)

执行

[root@node10 python]# python3 test.py test.py
{'a': 1, 'b': 2, 'c': 3}

fromkeys()

使用一组键和默认值创建字典 (不常用 赋初始值)

listvar = ['a','b','c']
res = {}.fromkeys(listvar,None)
print(res)
res = {}.fromkeys(listvar,[1,2])
print(res)

执行

[root@node10 python]# python3 test.py test.py
{'a': None, 'b': None, 'c': None}
{'a': [1, 2], 'b': [1, 2], 'c': [1, 2]}

1.2 删函数

pop()

通过键去删除键值对 (若没有该键可设置默认值,预防报错)

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res = dictvar.pop("tiantang")
print(res)
print(dictvar)
# pop可以在第二个参数上指定默认值,预防不存在改键时报错
res = dictvar.pop("ppoiiiiuiuiuiiiuiui","对不起,改键不存在")
print(res)

执行

天堂
{'renjian': '人间', 'diyu': '地狱'}
对不起,改键不存在

popitem() 删除最后一个键值对

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res= dictvar.popitem()
print(res)
print(dictvar)

执行

[root@node10 python]# python3 test.py test.py
('diyu', '地狱')
{'tiantang': '天堂', 'renjian': '人间'}

clear()  清空字典

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
dictvar.clear()
print(dictvar)

执行

[root@node10 python]# python3 test.py test.py
{}

1.3 更改函数

update()

批量更新(有该键就更新,没该键就添加)

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
dictvar.update({'tiantang':111,"jungle":"盘古"}) # 在括号里面写字典数据 (一个字典即可)
print(dictvar)
# 写法二
dictvar.update(a=1,b=2) #(在括号里面写关键字参数,是多个)
print(dictvar)

执行

[root@node10 python]# python3 test.py test.py
{'tiantang': 111, 'renjian': '人间', 'diyu': '地狱', 'jungle': '盘古'}
{'tiantang': 111, 'renjian': '人间', 'diyu': '地狱', 'jungle': '盘古', 'a': 1, 'b': 2}

1.4 查找函数

get()

通过键获取值(若没有该键可设置默认值,预防报错)

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res = dictvar.get("tiantang123")
print(res)
# 如果这个键不存在,可以指定默认值, 如果不写第二个参数值,默认返回None
res = dictvar.get("tiantang123","对不起,该键不存在")
print(res)
res = dictvar['tiantang']
print(res)

执行

[root@node10 python]# python3 test.py test.py
None
对不起,该键不存在
天堂

keys()

将字典的键组成新的可迭代对象

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res = dictvar.keys()
print(res)
for i in dictvar.keys():
print(i)
print("==============================")
for i in dictvar:
print(i)

执行

tiantang
renjian
diyu
==============================
tiantang
renjian
diyu

values()

将字典中的值组成新的可迭代对象

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res = dictvar.values()
print(res)
for i in res:
print(i)

执行

dict_values(['天堂', '人间', '地狱'])
天堂
人间
地狱

items()

将字典的键值对凑成一个个元组,组成新的可迭代对象

dictvar = {"tiantang":"天堂","renjian":"人间","diyu":"地狱"}
res = dictvar.items()
print(res)
for i in res:
print(i)
print ("================================")
for a,b in res:
print(a,b)

执行

dict_items([('tiantang', '天堂'), ('renjian', '人间'), ('diyu', '地狱')])
('tiantang', '天堂')
('renjian', '人间')
('diyu', '地狱')
================================
tiantang 天堂
renjian 人间
diyu 地狱

二 集合的相关操作

作用:交差并补

2.1 intersection() 交集

set1 = {"曹操","刘禅","孙权","刘备"}
set2 = {"郭嘉","刘禅","张昭","诸葛亮"}
res = set1.intersection(set2)
print(res)
res = set1 & set2
print(res)

2.2 difference()   差集

set1 = {"曹操","刘禅","孙权","刘备"}
set2 = {"郭嘉","刘禅","张昭","诸葛亮"}
res = set1.difference(set2)
print(res)
res = set2.difference(set1)
print(res)
res = set1 - set2
print(res)

执行

{'刘备', '孙权', '曹操'}
{'郭嘉', '张昭', '诸葛亮'}
{'刘备', '孙权', '曹操'}

2.3 union()  并集

set1 = {"曹操","刘禅","孙权","刘备"}
set2 = {"郭嘉","刘禅","张昭","诸葛亮"}
res = set1.union(set2)
print(res)
res = set1 | set2
print(res)

执行

[root@node10 python]# python3 test.py test.py
{'孙权', '曹操', '刘备', '郭嘉', '张昭', '刘禅', '诸葛亮'}
{'孙权', '曹操', '刘备', '郭嘉', '张昭', '刘禅', '诸葛亮'}

2.4 symmetric_difference() 对称差集 (补集情况涵盖在其中)

set1 = {"曹操","刘禅","孙权","刘备"}
set2 = {"郭嘉","刘禅","张昭","诸葛亮"}
res = set1.symmetric_difference(set2)
print(res) res = set1 ^ set2
print(res)

执行

[root@node10 python]# python3 test.py test.py
{'曹操', '郭嘉', '刘备', '孙权', '张昭', '诸葛亮'}
{'曹操', '郭嘉', '刘备', '孙权', '张昭', '诸葛亮'}

2.5 issubset()   判断是否是子集

真子集:子集元素一定少于父集,完全被包含在其中

set_father = {"曹操","刘禅","孙权","刘备"}
set_son = {"曹操","刘禅"}
res = set_son.issubset(set_father)
print(res)
res = set_son < set_father
print(res) print ("==========================================")
set_father = {"曹操","刘禅","孙权","刘备"}
set_son = {"曹操","刘禅","孙权","刘备"} res = set_son <= set_father
print(res)

执行

True
True
==========================================
True

2.6 判断是否是父集

set_father = {"曹操","刘禅","孙权","刘备"}
set_son = {"曹操","刘禅"}
res = set_father.issuperset(set_son)
print(res)
res = set_father > set_son
print(res)
print ("==========================================")
set_father = {"曹操","刘禅","孙权","刘备"}
set_son = {"曹操","刘禅","孙权","刘备"} res = set_son >= set_father
print(res)

执行

[root@node10 python]# python3 test.py test.py
True
True
==========================================
True

2.7 isdisjoint() 检测两集合是否不相交

不相交 True  相交False

set_father = {"曹操","刘禅","孙权","刘备"}
set_son = {"曹操","刘禅"}
res = set_father.isdisjoint(set_son)
print(res)

执行

[root@node10 python]# python3 test.py test.py
False

三 集合的相关函数

3.1 增函数

add()    向集合中添加数据

setvar = {"曹操","刘禅","孙权","刘备"}
setvar.add("曹丕")
print(setvar)

执行

[root@node10 python]# python3 test.py test.py
{'曹丕', '刘禅', '曹操', '刘备', '孙权'}

update() 迭代着增加

setvar = {"曹操","刘禅","孙权","刘备"}
lst = ['曹植','曹丕']
setvar.update(lst)
print(setvar) print("==================================")
setvar = {"曹操","刘禅","孙权","刘备"}
setavar = "abcd"
setvar.update(setvar)
print(setvar)

把列表当中的元素一个一个拿出来放进集合中,需要时可迭代性数据

执行

{'孙权', '刘禅', '曹操', '刘备', '曹丕', '曹植'}
==================================
{'刘禅', '孙权', '曹操', '刘备'}

3.2 删除函数

clear()  清空集合

setvar = {"曹操","刘禅","孙权","刘备"}
setvar.clear()
print(setvar)

执行

[root@node10 python]# python3 test.py test.py
set()

pop()    随机删除集合中的一个数据

setvar = {"曹操","刘禅","孙权","刘备"}
setvar.clear()
print(setvar)

执行三次

[root@node10 python]# python3 test.py test.py
刘备
{'孙权', '曹操', '刘禅'}
[root@node10 python]# python3 test.py test.py
曹操
{'刘备', '刘禅', '孙权'}
[root@node10 python]# python3 test.py test.py
刘禅
{'曹操', '刘备', '孙权'}

remove()  删除集合中指定的值(不存在则报错)

setvar = {"曹操","刘禅","孙权","刘备"}
setvar.remove("刘禅")
print(setvar)

执行

[root@node10 python]# python3 test.py test.py
{'曹操', '刘备', '孙权'}

discard() 删除集合中指定的值(不存在的不删除 推荐使用)

setvar = {"曹操","刘禅","孙权","刘备"}
setvar.discard("刘禅121211212") # 如果这个值不存在,就不删除,也不报错
print(setvar)
setvar.discard("刘禅") # 如果这个值不存在,就不删除,也不报错
print(setvar)

执行

[root@node10 python]# python3 test.py test.py
{'刘备', '刘禅', '曹操', '孙权'}
{'刘备', '曹操', '孙权'}

3.3 冰冻集合

frozenset 可强转容器类型数据变为冰冻集合
冰冻集合一旦创建,不能在进行任何修改,只能做交叉并补操作

定义一个空冰冻集合

fz = frozenset()
print(fz,type(fz)) fz1 = frozenset([1,"2",3,4])
fz2 = frozenset("7892")
print(fz1,fz2)

执行

frozenset() <class 'frozenset'>
frozenset({1, 3, 4, '2'}) frozenset({'9', '7', '8', '2'})

并冻集合只能做交叉并补

fz1 = frozenset([1,"2",3,4])
fz2 = frozenset("7892")
res = fz1 & fz2
print(res)

执行

[root@node10 python]# python3 test.py test.py
frozenset({'2'})

012.Python的字典和集合的相关函数的更多相关文章

  1. Python中字典和集合

    Python中字典和集合 映射类型: 表示一个任意对象的集合,且可以通过另一个几乎是任意键值的集合进行索引 与序列不同,映射是无序的,通过键进行索引 任何不可变对象都可用作字典的键,如字符串.数字.元 ...

  2. 07 Python之字典和集合

    1. 什么是字典 字典是用{}表示,以key:value的形式来保存数据的,其查找效率比较高 坑: 字典存储数据时是用哈希值来存储的,算法不能变(python的) 数据必须是可哈希的(不可变的),字典 ...

  3. Python中字典和集合的用法

    本人开始学习python 希望能够慢慢的记录下去 写下来只是为了害怕自己忘记. python中的字典和其他语言一样 也是key-value的形式  利用空间换时间 可以进行快速的查找 key 是唯一的 ...

  4. python学习——字典和集合

    一.字典 1)字典介绍 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种不可变的结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 1)字典操作 &qu ...

  5. Python中字典,集合和元组函数总结

    ## 字典的所有方法- 内置方法 - 1 cmp(dict1, dict2) 比较两个字典元素. - 2 len(dict) 计算字典元素个数,即键的总数. - 3 str(dict) 输出字典可打印 ...

  6. 流畅的python 字典和集合

    介绍 dict 类型不但在各种程序里广泛使用,它也是 Python 语言的基石.模块的命名空间.实例的属性和函数的关键字参数中都可以看到字典的身影.跟它有关的内置函数都在 __builtins__._ ...

  7. 【学习笔记】第五章 python3核心技术与实践--字典和集合

    [第四章]思考题的答案,仅供参考: []比list()更快,因为调用了list函数有一定的时间,而[]却没有. 前面我们学习了 Python 中的列表和元组,了解了他们的基本操作和性能比较.这节章,我 ...

  8. Python中列表、元组、字典、集合与字符串,相关函数,持续更新中……

    本篇博客为博主第一次学 Python 所做的笔记(希望读者能够少点浮躁,认真阅读,平心静气学习!) 补充: 列表.元组和字符串共同属性: 属于有序序列,其中的元素有严格的先后顺序 都支持双向索引,索引 ...

  9. Python黑帽编程2.3 字符串、列表、元组、字典和集合

    Python黑帽编程2.3  字符串.列表.元组.字典和集合 本节要介绍的是Python里面常用的几种数据结构.通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储.查询 ...

随机推荐

  1. php中的一些没有用过的,但是见到过的方法 函数

    strlen(); strlen 和 mb_strlen 都是用于获取字符串长度的, 其中 strlen 只针对单字节编码字符,也就是说它计算的是 字符串的总字节数,如果是多字节编码,如 gbk 和 ...

  2. C语言利用for循环打印菱形

    C语言利用for循环打印菱形(高度为奇数) 这次用的方法是上下部分分开打印,先打印上部分,再打印下部分. 先举个简单的例子打印,再改进代码,登堂入室从而理解. 例:打印一个高度(高度必须为奇数)为 5 ...

  3. 日志收集之filebeat使用介绍

    此系列文章一共分为三部分,分为filebeat部分,logstash部分,es部分.这里会按照每天几百亿条的数据量来考虑,去设计.部署.优化这个日志系统,来最大限度的利用资源,并达到一个最优的性能.本 ...

  4. JavaScript遍历对象方法总结

    前言 本篇内容将按照下图展开: 遍历Object Object最常见的遍历方法方法就是使用for...in...,但其有一定的局限性,比如只能遍历可枚举属性.虽然Object无法直接使用for循环和f ...

  5. 实战项目部署应用到kubernetes流程(jenkins+docker+k8s)

    说明 通过jenkins构建java应用程序发布到k8s集群中 本文已一个大数据的java项目来演示构建部署过程 支持发布和回滚 支持一套模板应用不同项目 k8s基础准备 创建项目名称空间 [root ...

  6. LINQPad,我的C#/.NET学习诀窍

    LINQPad,我的C#/.NET学习诀窍 在我以往的文章中,尤其涉及代码演示的,都使用了同一个工具--LINQPad.但许多客户面对我分享的.linq源文件都迷茫不知所措,因此有必要来聊聊一下这个强 ...

  7. pyqt5 多线程+定时器+读取本地图片

    前言 一个程序界面有多个button 按钮时,单击一个按钮,若此按钮对应的信号正在执行,且还未执行完毕: 此时再次单击另外一个按钮,就会出现假死状态. 这个时候我们就需要使用 多线程去解决 多线程+定 ...

  8. hdu4400 BFS+STL

    题意:        煤矿爆炸,每个煤矿有自己的x,y,d,d是他爆炸后会是d距离内的爆炸,每次输入一个爆炸的煤矿,问你这个煤矿爆炸会有多少个煤矿爆炸. 思路:       爆炸的过程就是搜索的过程, ...

  9. android so加载

    本文分析so加载的步骤,其实在之前dalvik浅析二中也有提及,但那重点关注的是jni.android中so库的加载,代码如下: loadLibrary("nanosleep"); ...

  10. DVWA之DOM XSS(DOM型跨站脚本攻击)

    目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...