set和dict理论和操作
Set 集合 和 Dict字典
set 集合
collection 翻译为集合类型,是一个大的概念 如:
set
是一个可变的,无序的,不重复的元素集合(已覆盖的形式去除重复的元素)
s = set() 创建一个空set
s = set(iterable) 创建一个可迭代的集合
set的元素不可以索引
set可以迭代
set中的元素是可hash的元素,一般的可hash元素都是不可变类型数据
hash是将整个元素遍历一遍,不管你是什么类型,即使你是在元组中套了一个list 也不可以hash,
hash时会将复合类型里面的元素全部遍历一遍
s = {1,'abd',(3,)}
s
{1, (3,), 'abd'}
s = {1,'ac',(3,[4])}
Traceback (most recent call last):
File "<pyshell#53>", line 1, in <module>
s = {1,'ac',(3,[4])}
TypeError: unhashable type: 'list'set 与 set 不能使用 +号 连接
set.add(元素) 一次只能添加一个元素,不能叠加 可迭代的对象;如果元素已经存在则什么都不做
s = set()
s.add(range(6))
s
{range(0, 6)}update(others) >>> Neno 就地修改
多个可迭代对象 ;*+标识符(变量名),参数others必须是 可迭代对象
作用:将多个数据集合合并到一个set集合中;迭代时会自行去重
remove(elem)
从set中一出一个元素;元素不存在,抛出KeyError异常(类似字典)
discard(elem)
从set中移除一个元素;元素不存在什么都不做
pop() >>>item
移除并返回任意元素;空集返回KeyError异常
clear()
移除所有元素
修改:
要么删除,要么加入新的元素
查询
非线性结构,无法索引
遍历
可迭代所有元素
成员运算符
in 和 not in 判断元素是否在set中
反复in 用set list 效率不高 耗时较长 不推荐使用in的类型之一
dict
定义:
初始化字典
d = {} 创建空字典
d = dict(**kwargs) 使用name = value 初始化一个字典
d = dict.fromkeys(iterable,value)
d = dict.fromkeys(range(6),6) 创建一个从零到5的key,值为6;不赋值时,默认为None
访问字典
dict[key]
返回key对应的value值;当 key 不存在时抛出KeyError异常
dict.get(key[,default])
返回key对应的value值;key不存在时返回缺省值,如果没有缺省值返回Neno
setdefault(key [,default])
返回key对应的value值;key不存在时,添加kv对,value的是为default,返回default
如果么有default值就 缺省为Neno
字典的修改
dict [key] = value
将key对应的值进行修改,赋值
key不存在时 添加新的kv对
update([other])>>>>Neno 就地修改
使用另一个字典的kv对来更新本字典
key不存在时,就添加;存在,就覆盖已经存在的值
字典的删除
dict.pop(key [,default]) 移除的kv对是无序的
key存在就移除它,返回它的value
key不存在,返回给定的default;没有设置default是,就抛出keyError异常
#我们直接移除时,会发生遍历元素时 的key值 位移从而移除的元素会出现遗漏
#所以我们要建立一个新的列表,遍历k将元素添加到其中,在实行pop()命令
不能在for循环中删除,
d = dict(a=1,b=2,c="abc") 2018.08.14 53:00
keys=[]
for k,v in d.items():
if isinstance(v,int): #判断 该值是否是 我们需要的值,
keys.append(k) #不是则将key 保存到一个list中
for k in keys: #遍历keys中的k值 找到符合我们 if语句的V值
d.pop(k) #找到就将该元素从字典中移除
print(d)
dict.popitem()
移除并返回一个任意键值对
字典为empty,抛出KeyError异常
dict.clear()
清除字典
del 删除 2018.08.14 13:00不清楚
删除的并不是对象,而是将value的引用计数减一
字典的遍历
字典是由键值对组成的元素集合,所以遍历字典有三种形式
1.遍历key
for key in dict.keys: print(key) == for k in dict: list(dict) == list(dict.keys())
2.遍历value 2018.08.14 24:00 用其他遍历value
for value in dict.values : print(value) for k in dict:print(dict[k])或者
3.遍历kv值
for key,value in dict.items : print(kry,value) == list(dict.items())
总结
python3中,keys、value、items返回一个类似生成器的可迭代对象,不会吧函数的结果复制到内存中
dictionary view对象,可以使用len()、iter()封装成迭代器的语句、in操作
字典的entry的动态视图,针对items,键值对;字典发生变化,视图将反映出这些变化
keys返回一个类set对象,也可以看做是一个set集合
keys values items python2 与 python3 有所不同 36:30
2018.08.14 33:00 不清楚
key的要求和set的元素是一致的
set的元素可以看做key,set可以看走dict的简化版
hashsble可哈希才可以作为key,可用hash()测试
defaultdict缺省字典
collections.defaultdict([default_factory[,......]])
第一个参数default_factory,缺省为Neno,他提供一个初始化函数。当key不存在时,会调用这个工场函数来生成key对应的value
转载于:https://blog.51cto.com/12951676/2161657
set和dict理论和操作相关推荐
- 汇总python三种数据结构list,set,dict的常见操作
文章目录 前言 list set dict 前言 这3个东西太常用,必须熟练掌握. list 功能 操作 去重 set(a) 排序 a.sort() 或者a=sorted(a) 插入 a.insert ...
- s5pv210——定时器理论与操作
以下内容源于朱有鹏<物联网大讲坛>课程的学习,如有侵权,请告知删除. 一.定时器简介 1.定时器是SoC中常见外设 (1)定时器与计数器. 计数器每隔一个固定时间会计一个数: 计数值 * ...
- (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作
List定义 定义:list1 = ['name','python','sun','dog'] list获取:list1[0]->name,list1[3]->sun list修改:lis ...
- 计算机系统-理论-CPU操作/处理数据的方式/寻址方式/局部性原理/位运算/进制转换
在计算机中,cpu将一切硬件,都看成内存,各种硬件在CPU的眼中都是下面这样子的 CPU对硬件的操作,其实就是和这些硬件的内存或者BIOS进行交互,CPU能做且只能做三件事 1.将某个地址中存储的字节 ...
- C#理论 —— 文件操作、委托和事件
文章目录 1. 文件操作 1.1 获取计算机驱动器信息Driveinfo 1.2 文件夹操作Directory.Directoryinfo 1.3 文件操作File.FileInfo 1.4 文件路径 ...
- 阿里云SLB负载均衡理论与操作
目录 一.负载均衡概念 二.SLB 1.CLB与ALB 2.负载均衡包含的模块 3.使用ECS的优势 3. 负载均衡的使用场景 4.SLB的优势 5.SLB提供的功能 6.SLB的应用场景 7.SLB ...
- RFID基本理论与操作实验
目录 实验环境准备:PC端与Sensor-EH读写器模块的连接 实验第一部分:超高频RFID寻卡操作 实验第二部分:超高频RFID防冲突机制 实验第三部分:超高频RFID读写卡操作 各内存区数据读取操 ...
- 【PLC】贝加莱PLC理论及操作年度培训
最近在进行PLC培训,主要是贝加莱PLC产品的学习,学习了上下位机的一些基本操作,能够进行一些简单的实践,最后顺利通过年度考核. 0 引言 PLC:可编程逻辑控制器,由CPU.存储器.输入输出 ...
- Hbase理论与操作
1.结构 数据库以 region 的形式存在 支持 HDFS 文件系 使用 WAL(Write-Ahead Logs)存储日志 参考系统是 Zookeeper 使用行键(row k ...
最新文章
- 聊聊EIGRP的自动汇总与手工汇总
- 实现一个webpack模块解析器
- 分布式系统的发展演变以及RPC简介
- CVPR 2019 | 基于可解释性以及细粒度的可视化解释卷积神经网络
- 计算机工程与科学北京,计算机工程与科学
- DataBseDesign工作笔记003---ERStudio使用笔记_基本使用方法详解
- 打印 SpringMVC中所有的接口URL
- Codeforces Round #296 (Div. 2) C. Glass Carving [ set+multiset ]
- 计算机专业基础 -- Spring系列框架相关基础知识
- 当金蝶BOS开发网版主啦,纪念下!^_^
- 百度搜索引擎的搜索高级语法及应用
- 学个痛快,清华大学网上课程免费开放!知网免费下载!CSDN送课程!
- WIN2003 装不上mssql2000
- 什么是迭代器(Iterator)
- ae中计算机打字预设,AE预设-5种科幻标题打字机光标文字输入模拟Web浏览器动画预设Typewriter Text Presets...
- 淘宝客如何通过闲鱼引流?淘宝客、闲鱼营销推广方式有哪些?
- css3选择器详细探索
- 立创EDA之导出BOM
- 全面解析5种常见悬挂——拖曳臂式悬挂
- 昆明理工大学计算机调剂贴吧,昆明理工大学2020年硕士研究生调剂公告(二)...