字典基础

#
# 主题:字典基础
#if __name__ == '__main__':# 字典是一种 python 数据结构# 字典以键值对(key: value)的方式存储数据,字典是一个无序的序列(排列有前后顺序)# 列表是无序序列,排列无先后顺序# 相当于 JavaScript 中的对象# 字典通过 hash 函数和键值对中的键,计算出存储位置,之后才能找到对应的值# 键值对的键时不可变序列(不能进行增删改查),如字符串、整数等# 字典和列表都是可变序列,都可以进行增删改查

创建字典

#
# 主题:创建字典
#if __name__ == '__main__':# 使用花括号scores = {'Bob': 100, 'Jenny': 90, 'Danny': 80}print(scores)               # {'Bob': 100, 'Jenny': 90, 'Danny': 80}print(type(scores))         # <class 'dict'># 使用内置函数 dictstudent = dict(name = 'Liming', age = 20)print(student)              # {'name': 'Liming', 'age': 20}# 空字典d = {}

获取字典的元素

#
# 主题:获取字典的元素
#if __name__ == '__main__':scores = {'Bob': 100, 'Jenny': 90, 'Danny': 80}# 使用 []print(scores['Danny'])          # 80# 若键在原字典中不存在,则报错 KeyError,既无法找到对应的键# 使用 get 方法print(scores.get('Danny'))      # 80# 若键在原字典中不存在,则 get 方法返回默认值 Noneprint(scores.get('我', 0))      # 0# 若键在原字典中不存在,则可以返回自定义返回值

字典元素的增删改

#
# 主题:字典元素的增删改
#if __name__ == '__main__':scores = {'Bob': 100, 'Jenny': 90, 'Danny': 80}# 判断键是否存在于原字典中print('我' in scores)            # Falseprint('我' not in scores)        # True# 删除字典元素del scores['Danny']print(scores)                   # {'Bob': 100, 'Jenny': 90}scores.clear()                  # 清空字典print(scores)                   # {} 即空字典# 添加字典元素scores['我'] = 100print(scores)                   # {'我': 100}scores['me'] = 99print(scores)                   # {'我': 100, 'me': 99}# 改写字典元素scores['我'] = 98print(scores)                   # {'我': 98, 'me': 99}

获取字典视图

#
# 主题:获取字典视图
#if __name__ == '__main__':scores = {'Bob': 100, 'Jenny': 90, 'Danny': 80}# keys 方法获取字典中所有的 keykeys = scores.keys()print(keys)                 # dict_keys(['Bob', 'Jenny', 'Danny'])print(type(keys))           # <class 'dict_keys'>print(list(keys))           # ['Bob', 'Jenny', 'Danny']# 将所有 key 组成的视图转换为列表# values 方法获取字典中所有 valuevalues = scores.values()print(values)               # dict_values([100, 90, 80])print(type(values))         # <class 'dict_values'>print(list(values))         # [100, 90, 80]# items 方法获取字典中所有 key: value 对# 下面的输出结果中的小括号是元组items = scores.items()print(items)                # dict_items([('Bob', 100), ('Jenny', 90), ('Danny', 80)])print(type(items))          # <class 'dict_items'>print(list(items))          # [('Bob', 100), ('Jenny', 90), ('Danny', 80)]

遍历字典元素

#
# 主题:遍历字典元素
#if __name__ == '__main__':scores = {'Bob': 100, 'Jenny': 90, 'Danny': 80}for item in scores:print(item, scores[item], scores.get(item))     # 第一个参数控制输出键# 第二、三个参数控制输出值

字典的特点

#
# 主题:字典的特点
#if __name__ == '__main__':d = {'name': 'Danny', 'name': 'Jenny'} # 当有相同的键时,后出现的键值对会覆盖掉前面的键值对print(d)                # {'name': 'Jenny'}d = {'name': 'Smith', 'nikename': 'Smith'}  # value 可以重复print(d)                # {'name': 'Smith', 'nikename': 'Smith'}# 字典中的元素是无序的,所以无法在自定义位置处添加元素# 键必须是不可变对象(字符串、整数),列表不能作为键(因为列表是可变对象,无法计算哈希值)# 字典的存储空间可以根据需要动态地伸缩# 字典会浪费较大内存,是一种使用空间换时间的数据结构# 字典中第一个填入的数据不一定在字典的首位,因为需要根据数据的键计算哈希值,从而得到存储地址# 字典的存储位置与存入的先后顺序无关,而与键有关

字典生成式

#
# 主题:字典生成式
#if __name__ == '__main__':items = ['Fruits', 'Books', 'Others']prices = [96, 78, 85]d = {item.upper(): price for item, price in zip(items, prices)} # upper 方法是大写print(d)                # {'FRUITS': 96, 'BOOKS': 78, 'OTHERS': 85}# 若 items 或 prices 中元素个数不相等,则以元素个数少的那个为准建立字典

python源码中的学习笔记_第5章_字典相关推荐

  1. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  2. CNN入门详解及TensorFlow源码实现--深度学习笔记

    CNN入门详解及TensorFlow源码实现–深度学习笔记 ##一.卷积神经网络 ###1.简介 卷积神经网络是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出 ...

  3. android源代码 abi,Android内核源码Abi目录学习笔记

    好记性不如烂笔头,今天要学习的是Android中Abi目录下的代码.下面是基本的学习的笔记的汇总. 首先是include中的头文件的说明. 在cxxabi的头文件中主要需要掌握下面的几个点: 1.这个 ...

  4. vue 拷贝 数组_vue源码中值得学习的方法

    最近在深入研究vue源码,把学习过程中,看到的一些好玩的的函数方法收集起来做分享,希望对大家对深入学习js有所帮助.如果大家都能一眼看懂这些函数,说明技术还是不错的哦. 1. 数据类型判断 Objec ...

  5. python提取发票信息发票识别_(附完整python源码)基于tensorflow、opencv的入门案例_发票识别二:字符分割...

    (附完整python源码)基于tensorflow.opencv的入门案例_发票识别二:字符分割 发布时间:2018-05-14 20:16, 浏览次数:1201 , 标签: python tenso ...

  6. 《Python源码剖析》读书笔记

    <Python源码剖析>电子书下载 http://download.csdn.net/detail/xiarendeniao/5130403 Python源码在官网有下载链接,用ctags ...

  7. stl源码剖析_《STL源码剖析》学习笔记——空间配置器

    目录 1. 空间配置器概述 2. 构造和析构基本工具 3. 空间的配置与释放,std::alloc 4. 内存基本处理工具 1. 空间配置器概述 从STL的实现角度来看,空间配置器的位置尤为重要,整个 ...

  8. puppet最新源码包安装学习笔记

    最近去面试了2家大的电商网站的运维工作,公司对系统的自动化管理,虚拟化,mysql集群,系统性能的优化和shell及python编程的要求都比较高,虽然没有面试成功,但也明白了2013年自己学习的目标 ...

  9. 源码 状态机_LLVM学习笔记(1)--初探源码

    一直耳闻LLVM相比于GCC: well documented 架构灵活,前后端解耦符合龙书的讲解 昨天读到了一篇虽然概括却很周到的llvm入门导引 陈钦霖:LLVM Pass入门导引​zhuanla ...

  10. 从Mybatis源码中,学习到的10种设计模式

    一.前言:小镇卷码家 总有不少研发伙伴问小傅哥:"为什么学设计模式.看框架源码.补技术知识,就一个普通的业务项目,会造飞机不也是天天写CRUD吗?" 你说的没错,但你天天写CRUD ...

最新文章

  1. myeclipse同时部署两个项目-permgen space
  2. Django实现对数据库数据增删改查(一)
  3. Linux shell脚本编程(二)
  4. C# 发送邮件的记录(qq,126,Gmail)
  5. P2657-[SCOI2009]windy数【数位dp,dfs】
  6. Intellij IDEA创建的Web项目配置Tomcat并启动Maven项目
  7. node 安装 webpack
  8. Ubuntu编写开机自启动脚本(转载)
  9. C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改(上)
  10. java正则表达式笔记_java正则表达式笔记
  11. ubuntu配置LAMP
  12. Docker入门命令:开发人员版
  13. Threat Risk Modeling Learning
  14. 有关风向及风向处理的笔记
  15. 使用mysqldump备份数据库
  16. 单点登录(Single Sign On)
  17. java .class 反编译工具推荐
  18. winzip15.0注册码
  19. git官网下载太慢解决方法
  20. Linux的安装与Linux下PHP开发环境的搭建(LAMP)

热门文章

  1. 《学习之道》第十一章创造记忆情景
  2. VS C#程序打包覆盖安装不能更新的解决方法
  3. 【二叉树】二叉树遍历总结
  4. 【React Native开发】React Native控件之RefreshControl组件具体解释(21)
  5. debugging tools for windows 10下载安装问题
  6. GetAsyncKeyState() 0x8000
  7. 关于CoreData的理解和使用.
  8. [UE4]复制引起的重复对象
  9. 请求参数完整性校验,解决流只能写一次的问题
  10. UVALive - 5713 最小生成树