1. 什么是字典
  字典是用{}表示,以key:value的形式来保存数据的,其查找效率比较高

  坑:

    字典存储数据时是用哈希值来存储的,算法不能变(python的)

  数据必须是可哈希的(不可变的),字典中的key必须是可哈希的(不可变的)

  1. dic = {"jay":"周杰伦", "jj": "林俊杰", "jolin":"蔡依林"}
  2. print(dic['jay']) # 周杰伦
  3. dic['jay'] = "麻花藤"
  4. print(dic)#{'jay': '麻花藤', 'jj': '林俊杰', 'jolin': '蔡依林'}

2. 字典的增删改查
  1. 添加
  dic[新key] = 值

  1. dic = {"意大利": "李云龙", "美国": "美国往事"}
  2. dic["日本"] = "东京审判" # 新key表示添加
  3. dic['韩国'] = "釜山行"
  4. print(dic)#{'意大利': '李云龙', '美国': '美国往事', '日本': '东京审判', '韩国': '釜山行'}

  setdefault()

  有添加功能,dic.setdefault("key","value")

  如果key是存在的则不添加.

  流程:判断你给的key是否存在于字典中,如果存在不添加.如果不存在,执行新增的操作.

2. 删除
  pop(key)

  1. dic = {"张艺谋":"红高粱", "李安":"断臂山", "陈凯歌":"霸王别姬", "郭德纲":"祖宗十九代"}
  2. dic.pop("郭德纲") # pop(key) 删除郭德纲
  3. dic.popitem() # 随机删除一项. 在python早期版本 字典是无序的.
  4. del dic["李安"] del dic["key"] 删除指定一项

  dic.clear()  清空

3. 修改
dic[老key] = 值

  1. dic = {"jay":"周杰伦", "jj": "林俊杰", "jolin":"蔡依林"}
  2. dic['jay'] = "麻花藤"
  3. print(dic)#{'jay': '麻花藤', 'jj': '林俊杰', 'jolin': '蔡依林'}

update() 更新字典

  1. dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
  2. dic2 = {"赵四":"宝宝", "刘能":"萌萌", "皮校长":"皮长山"}
  3.  
  4. dic1.update(dic2) # 把dic2怼到dic1里面. 把dict2中的内容更新到dic1
  5. print(dic1)
  6. print(dic2)
  7. #{'赵四': '宝宝', '刘能': '萌萌', '王木生': '范伟', '皮校长': '皮长山'}
  8. #{'赵四': '宝宝', '刘能': '萌萌', '皮校长': '皮长山'}

4. 查询

dic[key]  直接使用key获得value,如果key不存在则报错
get(key, 值)  dic.get(key,值)  如果输入没有的key则会返回值  如果没有值 则返回默认的None
setdefault(key, value) 

  1. #第一个功能是添加(当key不存在). 第二个功能是查询(根据你给的key查询)
  2. # 整个执行流程: 判断给的key是否存在. 如果存在. 就不执行新增流程.直接查询出这个key对
  3. #应的value
  4. # 如果key不存在. 先执行新增操作. 再使用key把对应的value查询出来
  5. dic1 = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
  6. ret = dic1.setdefault("皮长山", "皮校长")
  7. print(ret) # 皮校长
  8. ret = dic1.setdefault("王木生", "宝宝")
  9. print(ret) # 范伟

5. 遍历,字典是一个可迭代对象

  1. dic = {"赵四":"刘晓光", "刘能":"王晓利", "王木生":"范伟"}
  2. # 1. 使用for循环直接遍历字典的key
  3. for key in dic:
  4. print(key)
  5. print(dic[key])
  6.  
  7. # 2. 可以使用字典的items()+解构可以直接获取到key和value
  8. for k, v in dic.items():
  9. print(k)
  10. print(v)

3. 字典的相关操作

1. keys() 获取到所有的键

2. values() 获取到所有的值

3. items() 拿到所有的键值对

  1. for k, v in dic.items(): # 遍历字典最简单的方案
  2. # print(item) # ('赵四', '刘晓光')
  3. # k, v = item # 解构
  4. # k = item[0]
  5. # v = item[1]
  6. print(k, v)

4. 字典的嵌套
字典的嵌套. 字典套字典

5. 集合(不重要). 去重复
集合中的元素是不重复的. 必须是可哈希的(不可变), 字典中的key
空集合:set()
空元组:tuple()
空列表:list()
非空集合: {123}集合, 集合其实就是不存value的字典

07 Python之字典和集合的更多相关文章

  1. Python中字典和集合

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

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

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

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

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

  4. 012.Python的字典和集合的相关函数

    一 字典的相关函数 1.1 增函数 dictvar = {"a":1,"b":2} dictvar["c"] = 3 print(dictv ...

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

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

  6. 流畅的python 字典和集合

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

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

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

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

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

  9. python基础知识3——基本的数据类型2——列表,元组,字典,集合

    磨人的小妖精们啊!终于可以归置下自己的大脑啦,在这里我要把--整型,长整型,浮点型,字符串,列表,元组,字典,集合,这几个知识点特别多的东西,统一的捯饬捯饬,不然一直脑袋里面乱乱的. 一.列表 1.列 ...

随机推荐

  1. jmeter源代码开发环境构建

    1.下载jmeter源码:http://jmeter.apache.org/download_jmeter.cgi 2.新建-->java Project-->Next-->src- ...

  2. Maven-指定要打包的文件

    在项目 pom.xml 中指定 <build> <resources> <resource> <!--控制资源目录下要打包进去的文件,这里为全部打包--> ...

  3. 前端性能之Chrome的Waterfall

    浏览器根据HTML中外连资源出现的顺序,依次放入队列(队列),然后根据优先级确定向服务器获取资源的顺序.同优先级的资源根据HTML中出现的先后顺序来向服务器获取资源. 瀑布中各项内容的含义: 排队: ...

  4. backspace 产生乱码的问题

    1.要使用回删键(backspace)时,同时按住ctrl键(一般情况下会有用,如果没用使用下面的方法)   2.设定环境变量   在bash下:$ stty erase ^? 或者把 stty er ...

  5. 利用js代码自动删除稿件的普通弹幕

    事情的起因是在b站投稿了一个高级弹幕测试的视频(av9940487),但是由于b站的弹幕池机制是新的弹幕顶掉旧的弹幕,所以导致一些人发的高级弹幕很快就被顶掉了. 所以就想着写个脚本来自动删除属性为普通 ...

  6. SQL常见面试题(学生表_课程表_总表)

    问题描述: 为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号.学员姓名.所属单位.学员年龄 C (C#,CN ) C#,CN 分别代表课程编号 ...

  7. elastic全文检索框架

    什么是ElasticSearch? 1.Elasticsearch是一个基于Lucene的搜索引擎.它提供了具有HTTPWeb界面和无架构JSON文档的分布式,多租户能力的全文搜索引擎.Elastic ...

  8. Python知识点面试题

    一. DB类 索引相关: 1. mysql索引种类 2. 什么是覆盖索引? MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索引:遵循最左前缀规则5.全文索引 其他: ...

  9. 【C/C++语言】指针常量与常量指针的区别

    三个名词虽然非常绕嘴,不过说的非常准确.用中国话的语义分析就可以很方便地把三个概念区分开. 一) 常量指针. 常量是形容词,指针是名词,以指针为中心的一个偏正结构短语.这样看,常量指针本质是指针,常量 ...

  10. 【Linux开发】linux设备驱动归纳总结(八):2.总线、设备和驱动的关系

    linux设备驱动归纳总结(八):2.总线.设备和驱动的关系 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...