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理论和操作相关推荐

  1. 汇总python三种数据结构list,set,dict的常见操作

    文章目录 前言 list set dict 前言 这3个东西太常用,必须熟练掌握. list 功能 操作 去重 set(a) 排序 a.sort() 或者a=sorted(a) 插入 a.insert ...

  2. s5pv210——定时器理论与操作

    以下内容源于朱有鹏<物联网大讲坛>课程的学习,如有侵权,请告知删除. 一.定时器简介 1.定时器是SoC中常见外设 (1)定时器与计数器. 计数器每隔一个固定时间会计一个数: 计数值 * ...

  3. (八)python3 只需3小时带你轻松入门——List 与 dict 的常用操作

    List定义 定义:list1 = ['name','python','sun','dog'] list获取:list1[0]->name,list1[3]->sun list修改:lis ...

  4. 计算机系统-理论-CPU操作/处理数据的方式/寻址方式/局部性原理/位运算/进制转换

    在计算机中,cpu将一切硬件,都看成内存,各种硬件在CPU的眼中都是下面这样子的 CPU对硬件的操作,其实就是和这些硬件的内存或者BIOS进行交互,CPU能做且只能做三件事 1.将某个地址中存储的字节 ...

  5. C#理论 —— 文件操作、委托和事件

    文章目录 1. 文件操作 1.1 获取计算机驱动器信息Driveinfo 1.2 文件夹操作Directory.Directoryinfo 1.3 文件操作File.FileInfo 1.4 文件路径 ...

  6. 阿里云SLB负载均衡理论与操作

    目录 一.负载均衡概念 二.SLB 1.CLB与ALB 2.负载均衡包含的模块 3.使用ECS的优势 3. 负载均衡的使用场景 4.SLB的优势 5.SLB提供的功能 6.SLB的应用场景 7.SLB ...

  7. RFID基本理论与操作实验

    目录 实验环境准备:PC端与Sensor-EH读写器模块的连接 实验第一部分:超高频RFID寻卡操作 实验第二部分:超高频RFID防冲突机制 实验第三部分:超高频RFID读写卡操作 各内存区数据读取操 ...

  8. 【PLC】贝加莱PLC理论及操作年度培训

      最近在进行PLC培训,主要是贝加莱PLC产品的学习,学习了上下位机的一些基本操作,能够进行一些简单的实践,最后顺利通过年度考核. 0 引言   PLC:可编程逻辑控制器,由CPU.存储器.输入输出 ...

  9. Hbase理论与操作

    1.结构  数据库以 region 的形式存在  支持 HDFS 文件系  使用 WAL(Write-Ahead Logs)存储日志  参考系统是 Zookeeper  使用行键(row k ...

最新文章

  1. 聊聊EIGRP的自动汇总与手工汇总
  2. 实现一个webpack模块解析器
  3. 分布式系统的发展演变以及RPC简介
  4. CVPR 2019 | 基于可解释性以及细粒度的可视化解释卷积神经网络
  5. 计算机工程与科学北京,计算机工程与科学
  6. DataBseDesign工作笔记003---ERStudio使用笔记_基本使用方法详解
  7. 打印 SpringMVC中所有的接口URL
  8. Codeforces Round #296 (Div. 2) C. Glass Carving [ set+multiset ]
  9. 计算机专业基础 -- Spring系列框架相关基础知识
  10. 当金蝶BOS开发网版主啦,纪念下!^_^
  11. 百度搜索引擎的搜索高级语法及应用
  12. 学个痛快,清华大学网上课程免费开放!知网免费下载!CSDN送课程!
  13. WIN2003 装不上mssql2000
  14. 什么是迭代器(Iterator)
  15. ae中计算机打字预设,AE预设-5种科幻标题打字机光标文字输入模拟Web浏览器动画预设Typewriter Text Presets...
  16. 淘宝客如何通过闲鱼引流?淘宝客、闲鱼营销推广方式有哪些?
  17. css3选择器详细探索
  18. 立创EDA之导出BOM
  19. 全面解析5种常见悬挂——拖曳臂式悬挂
  20. 昆明理工大学计算机调剂贴吧,昆明理工大学2020年硕士研究生调剂公告(二)...

热门文章

  1. Apache AB 压力测试
  2. 一道关于Promise应用的面试题
  3. ECharts - 嵌套环形图
  4. 清除WINDOW远程登录服务器的信息
  5. 获取自定义data的几种属性
  6. partition by 函数
  7. mysql优化 mysql.ini优化
  8. Ofbiz 电子商务平台
  9. 唐骏:幸福与财富无关
  10. Direct3D中设备丢失处理