看了大家的评论,还是有意外的收货。感谢每个小伙伴的评论与补充。

众人拾柴火焰高~

今天的笔记是记录python中的数据对象----字典!

前面有讲到list列表和tuple元组的笔记,他们都是一样可以用来储存对象。list列表是支持读写修改,tuple元组之支持读取,不可修改。但是他们有共同的特点,将单个的元素值,存储在列表或元组中,然后通过索引(元素下标)的方式去找到对应的元素,进行操作。

那么dictionaryt字典呢?它是什么数据结构?

字典这种数据结构被称为映射。字典中的值(value)没有特殊的顺序,但是这些值都存储在一个特定的键(key)下。我们可以通过键(key)找到对应的值。键(key)可以是数字、字符串或元组等。

就这么理解,和新华字典一样,通过拼音去找对应的字。~~~~就是这么个映射的意思。不要太较真。

我们先看下创建一个空字典:

 dict_1 = {}     #这就是一个空字典{},用变量dict_1指向他.

我们在创建一个有数据的字典: 下面的19,是数字对象。加引号就是字符串对象。具体加不加看你自己的用途,字典都是支持的~~~~

 dict_1 = {'name':'Xiao Hong','age':19,'iphone':''}    #创建第一个字典类型的数据

 dict_2 = {'Xiao Hong':{'name':'Xiao Hong','age':19,'iphone':''},    #创建第二个字典类型的数据,还可以这样创建哦
'Xiao Jun':{'name':'Xiao Jun','age':16,'iphone':''}}

我们发现:创建的第二个字典,它的键(key),对应的值(value)是另一个字典类。其实,字典对象的键(key)也是支持很多对象类型的,

最常用的就是数字和字符串类型作为键(key),因为查找对象的效率是最高的。

我相信你已经会根据以上结构去创建字典这样的映射结构了。接下来我们再创建一个新的字典,对它进行添加、修改、删除的操作。

为空字典,添加对象:

 dict_1 = {}   #创建一个空字典

 dict_1['name'] = 'Xiao'     #变量名【键】 = 【值】,直接赋值的方式添加对象
dict_1[1.34] = 'abc'
dict_1[100] = 'holle word' print(dict_1) #查看添加对象的效果

 dict_1 = {}   #创建一个空字典

 dict_1['name'] = 'Xiao'     #变量名【键】 = 【值】,直接赋值的方式添加对象
dict_1[1.34] = 'abc'
print(dict_1) #查看添加对象的效果 dict_1['name'] = 'hhh' #将'name': ['Xiao'] 改为:'name': ['hhh']
print(dict_1) #查看修改后对象的效果,做对比

我们看到了添加和修改,我要搞清楚一个概念,如果在我们赋值操作的时候,键(key)在字典中是不存在的,呢么就是添加对象;如果在我们赋值的时候,键(key)是本身字典就有同名的键(key),那就是修改。

如果说我们添加的时候不知道里面有没有同名的键(key),我们可以这样检查一下键(key)是不是在字典中已经存在:

 dict_1 = {'name':'Xiao Hong','age':19,'iphone':''}

 print('name' in dict_1)   #要查询的格式    键 in关键字 字典对象(变量名)
print('hhh' in dict_1) #返回True就是存在,返回的False则是不存在

当然也可以使用这个方法:

has_key()     可以检查当前字典中键是否存在,但是!!!python3中没有这个方法啦,所以不再举例了,用第一种 in关键字就好了.。

我们再看下删除字典中的一个元素,代码怎么实现:

 dict_1 = {'name':'Xiao Hong','age':19,'iphone':''}
print(dict_1) #删除之前 del dict_1['age'] #del关键字
print(dict_1) #删除之后

也可以这样删除字典中的元素:

 dict_1 = {'name':'Xiao Hong','age':19,'iphone':''}
print(dict_1) #删除之前 a = dict_1.pop('name') #pop()方法,删除字典元素的时候,将键对应的值返回给了变量。
print(dict_1) #删除之后
print(a) #我们看下变量a有没有指向删除的值 'Xiao Hong'

我看的pop()方法,删除字典元素的时候,将键对应的值返回给了变量。

有时候我们会遍历字典中的键:

使用 keys() 方法:

 dict_1 = {'name':'Xiao Hong',
'age':'',
'iphone':''} #我们创建的字典对象 for key in dict_1.keys(): #遍历字典中的键key
print(key,end= ' ') # end=' '意思是末尾不换行,加空格。

同样的,我们也可以遍历字典中的所有值:

使用values()  方法:

 dict_1 = {'name':'Xiao Hong',
'age':'',
'iphone':''} #我们创建的字典对象 for value in dict_1.values(): #遍历字典中的值value
print(value,end= ' ') # end=' '意思是末尾不换行,加空格。

有时候我们会同时遍历字典中的键和值,这个需要用到字典中的items() 方法:

items() 方法:  它可以同时获取key和value  我们看下代码的实现:

 dict_1 = {'name':'Xiao Hong',
'age':'',
'iphone':''} #我们创建的字典对象 for key,value in dict_1.items(): #用 items()函数,同时遍历键和值
print(key,value,end= '') #打印键和值,end=' '意思是末尾不换行,加空格。

 
 dict_1 = {'name':'Xiao Hong',
'age':'',
'iphone':''} #我们创建的字典对象 print(dict_1.get('name')) #我们可以使用get()方法获取字典的值

字典的合并,就是将两个字典合并在一起

update()   需要注意的是:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对。

 dict_1 = {'name_1':'Xiao Hong',
'age':'',
'iphone':''} #第一个字典 print(dict_1) #合并之前
dict_2 = {'name_2':'Xiao JUN',
'age':'',
'iphone':''} #第二个字典 dict_1.update(dict_2) #将dict_2合并在dict_1字典中。
print(dict_1) #合并之后的dict_1字典,注意重复的键值对会被覆盖掉

清空字典用clear() 方法:

 dict_1 = {'name_1':'Xiao Hong',
'age':'',
'iphone':''} #创建一个字典 print(dict_1) #清空之前
print(dict_1.clear()) #清空并打印结果

字典还有很多方法,后面的笔记,遇见不同的场景,处理字典的时候我们在详细分析记录。

Python基础总结之第十天开始【认识一下python的另一个数据对象-----字典】(新手可相互督促)的更多相关文章

  1. Python基础总结之第十天开始【认识模块、包和库】(新手可相互督促)

    每天都有一种备课的赶脚~~~ 什么是模块? 在实际的开发过程中,代码量肯定有成千上万行的代码,甚至十几万行代码也很正常吧... 那么这么多的代码如果放在一个文件中,肯定是很不合适的,为了以后程序的编写 ...

  2. Python基础总结之第七天开始【认识函数的参数以及返回】(新手可相互督促)

    周日的早上,吃的饱饱,刷刷抖音,开始学习新一天的知识了~~~ 函数的参数: 昨天的笔记中,我们已经使用了参数,在案例中的name和sex 就是参数. 一般的函数都是有参数的,函数的参数都是放在函数定义 ...

  3. Python基础学习笔记(十二)文件I/O

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...

  4. Python基础学习笔记(十)日期Calendar和时间Timer

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...

  5. (Python基础教程之二十二)爬虫下载网页视频(video blob)

    Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...

  6. python基础学习笔记(十二)

    模块 前面有简单介绍如何使用import从外部模块获取函数并且为自己的程序所用: >>> import math >>> math.sin(0) #sin为正弦函数 ...

  7. Python基础总结之初步认识---clsaa类(上)。第十四天开始(新手可相互督促)

    最近的类看着很疼,坚持就是胜利~~~ python中的类,什么是类?类是由属性和方法组成的.类中可能有很多属性,以及方法. 我们这样定义一个类: 前面是class关键字 后面school是一个类的名字 ...

  8. Python之路【第二十四篇】:Python学习路径及练手项目合集

      Python学习路径及练手项目合集 Wayne Shi· 2 个月前 参照:https://zhuanlan.zhihu.com/p/23561159 更多文章欢迎关注专栏:学习编程. 本系列Py ...

  9. python基础之pip、.pyc、三元运算、进制、一切皆对象、可变与不可变类型

    一.pip(下载工具==yum) 1.重点(必须掌握的) 列出已安装的包 pip list 安装要安装的包 pip install xxx 安装特定版本 pip install django==1.1 ...

随机推荐

  1. 5分钟学会Java9-Java11的七大新特性

    现在Java有多元化的发展趋势,既有JS又有C++还有C#的影子,不学习那是不行滴. 来来来,花5分钟看看Java9-Java11的七大新特性,还有代码样例. Java11 发布了,然而很多公司还在用 ...

  2. 《深入理解ES6》读书笔记

    文章目录 第一章 块级绑定 1. var 声明与变量提升 2. let 与 var 的区别 第二章 字符串与正则表达式 1.字符串扩展 1.1 includes().startsWith() .end ...

  3. Liunx 安装 Nessus

    Liunx 安装 Nessus   啥子是Nessus 它是一款系统漏洞扫描与分析软件,可以扫描服务器存在哪些漏洞,页面简介美观,非常Nice. 获取激活码 首先访问如下网站 https://www. ...

  4. 带你手写基于 Spring 的可插拔式 RPC 框架(一)介绍

    概述 首先这篇文章是要带大家来实现一个框架,听到框架大家可能会觉得非常高大上,其实这和我们平时写业务员代码没什么区别,但是框架是要给别人使用的,所以我们要换位思考,怎么才能让别人用着舒服,怎么样才能让 ...

  5. hdoj1009 FatMouse' Trade——贪心算法

    贪心思路:按单位猫粮能兑换到的javaBean从大到小将组合进行排序,总是在当前兑换尽可能多的javabeans 问题描述:点击打开链接 hdoj1009 FatMouse's Trade 源代码: ...

  6. 【疑难杂症】windows下如何有效重装印象笔记

    重装这么简单的操作还用得着写篇文章吗??emmmm,言之有理,简单的重装就是卸载后重新下载最新的安装包然后安装就完事了,这里说的肯定是不简单的重装[滑稽]. 背景是这样的,之前在mac上对印象笔记的笔 ...

  7. Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)

    简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态. adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或 ...

  8. django基础知识之定义模型:

    定义模型 在模型中定义属性,会生成表中的字段 django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为 ...

  9. Java第二次作业——数组和String类

    Java第二次作业--数组和String类 学习总结 1.学习使用Eclipse关联jdk源代码,查看String类的equals()方法,截图,并学习其实现方法.举例说明equals方法和==的区别 ...

  10. [NOI2014]魔法森林题解

    这道题正解其实是LCT,然而貌似SPFA也可以成功水过,所以根本不知道LCT的我只能说SPFA了. 这道题最大的限制是两种精灵就意味着一条道可能有两个权值,因此我们需要去将其中一个固定,然后再推另一个 ...