1、数据类型的划分
- 数据类型划分:可变数据类型/不可变数据类型
- 不可变数据类型:元组,bool,数字,字符串,不可更改的又叫可哈希
- 可变数据类型:list,dict,不可哈希
- 名称空间存储的是变量与值的对应关系
2、字典的简介
- 元组:"()",列表:"[]",字典:"{}"
- 字典的key值(dict key):必须是不可变(可哈希)数据类型,而字典的值(value)可以是任意数据类型
- dict优点:查询速度快(其使用哈希map,查询算法为二分查找法);适用于储存大量的关系型数据
- 字典的特点:无序的、无索引(3.5及以前的特性)、3.6及以上是有序的
3、字典示例
#新建一个字典
dic = {'name':['大宝','小宝'],
'py9':[{'num':71,'av_age':18}]
}
4、字典的有关操作
首先定义字典:dic1 = {'age':18,'name':'Jin','sex':'male'}
,这个在下面的相关实例中会用到。
1、往字典里面添加数据
- 方法一:
字典名[属性名(键值)]=属性值
该方法的特点:如果有的话则覆盖掉原来的值,没有则增加
实例:dic1['high'] = 185
- 方法二:
字典名.setdefault(key,value)
方法的特点:有此键值不做任何操作,没有则增加
实例:dic1.setdefault('weight',180)
2、删除字典中的某个数据
- 方法一:
字典名.pop(key)
方法的特点:有返回值,按找键值去删
实例:result = dic1.pop('liu','无此值')#没找到则返回第二个参数
- 方法二:
字典名.popitem()
方法的特点:有返回值,为元组里面删除的键值 - 方法三:
del 字典名['键值']
3、清空字典
- 方法一:
字典名.clear()
——清空字典里面的数据 - 方法二:
del 字典名
——删除字典
4、字典的update()方法
基本语法: 字典名1.update(字典名2)
解释: 表示将“字典名2”中的元素复制到“字典名1”中,复制的规则是“字典名2”和“字典名1”都有的key,其值以“字典名2”为准;然后对于“字典名1”没有的而“字典名2”有的key复制到“字典名1”中,然后保留“字典名1”中有的而“字典名2”中没有的key和相应的value即可。
实例:
5、查询字典的内容的方法
查询字典内容的方法有三个,分别为:keys()、values()、items();其调用的基本语法都类似于字典名.方法名()
这种方法,如:dic.keys()
;下面通过实例说明这几个方法的异同:
6、打印字典中键值的方法
在python中,可以通过for循环打印字典中的key值,具体看实例:
7、打印字典中的键值对
打印字典中的键值对有两种方法,虽然都是通过for循环完成,但是其输出结果有所差异,这里以一个例子说明:
说明: 从上面可以看出,当for循环中只有一个变量(i)时,打印出的结果是将key和相应的value放在一个元组中输出的;而有两个变量(i,j)时,则直接是打印的key和相应的value的字符串;并未对其用其他类型(如元组)进行封装。
8、get()方法
基本语法: 字典名.get(key,如果没找到相应的值应输出的内容)
说明: 根据key查找相应的value值,若字典中没有相应的key,则输出第二个参数的内容
实例:
5、字典的嵌套
这里以一个实例来进行说明:
首先,定义如下字典。
dic = {
'name':['alex','wusir','taibai'],
'py9':{
'time':'1213',
'learn-price':'12000',
'addr':'CBD',
},
'age':51
}
实例1:
实例2:
附:在python中不定义第三个变量交换两个变量的值
可以利用python的赋值语句独有的一些特性来完成类似操作,具体如下:
a = c #c为已知常量
b = m #m为已知常量
a,b = b,a
实例:
a = 1
b = 2
a,b = b,a #结果:a=2 b = 1