1、字典
 
       定义:字典是以 key :value 的形式来保存数据,用{} 来表示,存储的是 key : value
       查找效率比较高(注:字典存储数据时,用的是hash值来存储,算法不能变(python)
        数据必须是不可变的(可哈希),字典的key必须是可哈希的(不可变)
       
           列表是可变的,不可哈希
           元组是不可变的,可哈希的
 
2、字典的增删改查
 
    增加
 
        dic[新key] = 值
 
        dic.setdefault()  有添加的功能,如果key存在,不添加
        流程:判断新key是否在字典中存在,如果已经存在了,不做变更;如果不存在,执行添加操作
 
    删除
 
        dic.pop(key) 
        dic.popitem()  随机删除一项,在python早期的版本中,字典是无序的。
        del dic[key]    
        dic.clear()  清空
 
    修改
 
        dic[老key] = 值
        update(dic1)     # 把dic1中的内容更新到dic中,如果key重名,则修改替换,如果不存在key,则新增。
 
    查询 
 
        一般用key来查找具体的数据。
         1、直接使用key就可以拿到value。当key不存在时,报错  
         2、dic.get(key)  当key 不存在返回 None 
                                   当key存在时,返回第二个参数,默认第二个参数为 None
         3、 dic.setdefailt()  第一个功能是添加(当key不存在的时候)  第二个功能是查询(根据你给的key)
                整个执行流程:判断给的key是否存在,如果存在,就不执行新增流程,直接查询出这个key对应的value
                如果key不存在,先执行新增操作,再使用key把对应的value查询出来。
 
      遍历,字典是一个可迭代对象
            
            a,b = 1,2 # 把后面的两个值分别赋值给前面两个变量,解构,解包
            元组和列表是可以解包的
    for k,v in dic.items():
        print(item)
        k,v = item   #解构
        k = item[0]
        v = item[1]
        print(k,v)
 
            遍历字典的两套方案
      1、使用for循环直接遍历字典
dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
for key in dic:
print(key)
print(value)

  

   2、可以使用字典的items() +解构可以直接获取到key 和 value

for k,v in dic.items():
print(k)
print(v)

  

3、字典的相关操作
 
        dic.keys()  获取到所有的键值
        dic.values()  获取到所有的值
        dic.items()  获取到所有的键值对
 
4、字典的嵌套
 
        字典的嵌套,字典套字典
 
5、 set 集合
 
        set集合是python的一个基本数据类型。set中的元素是不重复的无序的,里面的元素必须是可hash的(int,str,tuple,bool)
        set 就是dic类型的数据但不保存value,只保存key set也用{}表示
 
        注: set集合中的元素必须是可hash的,但set本身是不可hash的,set是可变的
 
        使用set的不可重复的特性,我们可以使用set来去重  

# 给 list 去重
lst =[45,6,'geg',45,6]
lst = list(set(lst)) #把list转化成set,再转化回list
print(lst)

  

 
 6、set集合的增删改查
 
         1、增加
             s.add('元素')  # 重复的内容不会被添加到set集合中
 
             s.update('元素')   #迭代更新
 
          2、删除
    
             item = s.pop()   # 随机弹出一个
             s.remove('元素')   # 若这个元素不存在,删除在会报错
             s.clear()  #清空set集合,清空完之后,会打印为 set(),要和dic区分
 
         3、修改
 
            set集合中的数据没有索引,也没办法去定位一个元素,所以没有办法直接修改
            我们可以采用先删除后添加的方式来完成修改操作

s = {"刘嘉玲", '关之琳', "王祖贤","张曼⽟", "李若彤"}
# 把刘嘉玲改成赵本⼭
s.remove("刘嘉玲")
s.add("赵本⼭")
print(s)

  

  4、查询
 
             set 是一个可迭代的对象,所以可以进行for循环
 
 
7、set集合的一些其他操作
 
  交集:s1&s2   s1.intersection(s2)
  并集:s1|s2     s1.union(s2)
  差集 :s1 -s2    s1.difference(s2)     得到s1 中单独存在的元素
  反交集(s1^s2)   s1.symmetric_difference(s2)  两个集合中单独存在的元素
  子集:  s1 < s2    s1.issubset(s2)   s1 是 s2 的子集吗?返回  True  or  False
  超集: s1 >s2   s1 是s2 的超集吗? False  or  True
 
 
  set集合本身是可以发生改变的,是不可hash的。我们可以用frozenset来保存数据。frozenset是不可变的,也就是一个可哈希的数据类型 
s = frozenset(["赵本⼭", "刘能", "⽪⻓⼭", "⻓跪"])
dic = {s:'123'} # 可以正常使⽤了
print(dic) #{frozenset({'刘能', '⽪⻓⼭', '赵本⼭', '⻓跪'}): '123'}

  

python -- 字典 集合的更多相关文章

  1. python --->字典 集合 学习笔记

    1.字典--->创建空字典:dict={} broa=["李宁",”耐克“,“阿迪达斯”,“鱼c工作室”] sloga=[“A”,“B”,“C”,“D”] dict={&qu ...

  2. 3、Python字典集合

    2.3字典 字典是键值对的无序可变序列.键值之间用冒号隔开,相邻元素之间用逗号隔开,所有元素放在大括号之间{},键可以是Python中所有不可变的数据,不能用列表.元组.字典作为字典的键,键不可重复, ...

  3. Python字典和集合

    Python字典操作与遍历: 1.http://www.cnblogs.com/rubylouvre/archive/2011/06/19/2084739.html 2.http://5iqiong. ...

  4. Python学习笔记3-Python元组、数组、字典集合的操作

    在Python中数组中的每一项可以是不同的数据类型 元组:只能读不能写的数组 aTuple=(1,'abc','tmc',79.0,False) print aTuple[1:3] print typ ...

  5. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  6. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  7. Python 字典dict 集合set

    字典dict Python内置字典,通过key-value进行存储,字典是无序的,拓展hash names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75 ...

  8. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  9. 如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧

    实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89, ...

随机推荐

  1. Python linux多版本共存以及虚拟环境管理(转摘)

    Python linux多版本共存以及虚拟环境管理 2017年08月01日 18:42:25 sliderSun 阅读数:197更多 个人分类: python   版权声明:本文为博主原创文章,未经博 ...

  2. Kali密码攻击之——离线攻击工具

    在线密码攻击在渗透测试中很重要,但对于测试过程中得到的哈希,加密数据,又需要离线破解工具辅助解决 Creddump套件 kali下离线攻击工具中的Cache-dump,lsadump,pwdump,均 ...

  3. noip单词接龙

    看了许多题解都好长啊,自不量力的来贴一下代码 (震惊于这都能ac...) 这道题的思路是先从字符串中找有重部分然后直接比较剩下的部分,比较的数据也可以用来计算数值 其实满水的题 总之看注释啦(竟然能耐 ...

  4. 泛型-----键值对----映射 hashmap--entry中key value 链表

    connection map 集合框架 * java.util.Collection *集合与数组相似,也是可以保存一组元素,并且提供了操作元素的相关方法. *collection是所有集合的顶级接口 ...

  5. LeetCode169 求众数

    题目链接:https://leetcode-cn.com/problems/majority-element/ 给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ ...

  6. 数据库oracle 目录结构

    Oracle_Home主目录位于D:\dev\oracle\product\10.2.0(oracle安装路径)下,它包含Oracle软件运行有关的子目录和网络文件以及选定的组件等:若在主机上第一次且 ...

  7. ORA-64379: Action cannot be performed on the tablespace assigned to FastStart while the feature is enabled

    解决方法: 禁止IM FastStart exec DBMS_INMEMORY_ADMIN.FASTSTART_DISABLE();

  8. oracle flashback data archive闪回数据归档天坑之XID重用导致闪回查询数据重复

    我们有个系统使用了Oracle flashback data archive闪回数据归档特性来作为基于时间点的恢复机制,在频繁插入.更新期间发现SYS_FBA_HIST_NNNN表中的XID被两个事务 ...

  9. oracle insert、append、parallel、随后查询的redo与磁盘读写

    SQL> set autotrace traceonly statistics; SQL> insert into big_table_dir_test1 select * from bi ...

  10. SpringIOC和AOP原理 设计模式

    SpringIOC的特点 在接触Spring的过程中,听到最多的无非两个名词,一个是控制反转一个是依赖注入.实际这是一个意思,控制反转代表原来由程序本身去控制对象之间的依赖关系的这种格局被反转了,通过 ...