字典(dict)
字典是一种新的数据结构,称为映射(mapping)
字典的作用和列表类似,都是用来储存对象的容器
列表储存数据的性能很好,但是查询数据的性能很差
在字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速查找到指定的元素
在查询元素时,字典的效率非常快
在字典中可以保存多个对象,每个对象都会有一个唯一的名字,这个唯一的名字,我们称为键(key),通过key可以快速的查询value,所以字典,我们也称为叫做键值对(key--value)结构
每个字典中可以有多个键值对,而每一个键值对我们称其为一项(item)
创建字典:使用{}来创建字典
创建一个空字典

d = {}#输出这个空字典,并检查它的类型print(d,type(d))

创建一个保护有数据的字典
语法:
{key1:value1,key2:value2,key3:value3}
字典的值可以是任意对象
字典的key可以是任意的不可变对象 :int ,str ,bool, tuple
字典的key是不能重复的,如果出现重复的后边的会替换到前边的

n = {"name":"孙悟空","age":"20","sex":"男"}print(n)# 字典的取值:需根据key来获取,如果使用了字典中不存在的键,会报错print(n["name"],n["age"],n["sex"])

字典的使用:
创建字典
语法:{k1:v1,k2:v2,k3:v3}

使用dict()函数来创建字典

d = dict(name = "孙悟空",age = "23",sex = "男") #每一个参数都是一个键值对

参数名就是键,参数名就是值(这种方式创建的字典,key都是字符串)

也可以将包含双值子序列的序列转换为字典
双值序列:序列中只有两个值,[1,2],[3,4],("1",3) "ab"
子序列:如果序列中的元素也是序列,那么我们称这个元素为子序列
                # 如: [(1,2),(3,6)]

m= dict([("name","五宋朝"),("age",19)])#输出并检查其类型print(m,type(m))

 len(): 获取字典中键值对的个数

m= dict([("name","五宋朝"),("age",19)])#利用len()函数获取键值对的个数print(len(m))

in 和 not in :
        # in:检查字典中是否包含指定的键
        # not in 检查字典中是否不包含指定的键

m= dict([("name","五宋朝"),("age",19)]) print("name" in m)print("ann" not in m)

获取字典中的值
1. 获取字典中的值,根据键值来获取
语法:  d[key]  

m= dict([("name","五宋朝"),("age",19)])print(m["name"])


通过这个方法来获取值时,如果键值不存在,会抛出异常: keyError

2. d.get(key[, default])方法
该方法用来根据键值来获取字典中的值

m= dict([("name","五宋朝"),("age",19)])print(m.get("name"))print(m.get("wr5t"))


用这个方法来获取字典中的值时,如果键值不存在,会返回None,而不会报错
也可以指定一个默认值,来作为第二个参数,这样当获取不到值时将会返回默认值
# print(m.get("uuu","wwe"))

修改字典 :
1. d[key] = value
如果key存在则覆盖对应的value,不存在则添加

m= dict([("name","五宋朝"),("age",19)])m["name"] = "wetyu"m["adress"] = "河南"print(m)


2. s.setdefault(key[,default])
可以用来向字典中添加key-value

如果key已经存在于字典中,则返回key的值,不会对字典做任何操作
如果key值不存在,则向字典中添加这个key,并设置value

m= dict([("name","五宋朝"),("age",19)])m.setdefault("name","猪八戒")print(m)


3. update([other])
将其他的字典中的key-value添加当前字典中
如果有重复的key,则后边的会替换原先的

a = {"a":1,"b":2,"c":3}a2 = {"a":4,"e":5,"f":6}a.update(a2)


 

删除
1. 使用del来删除字典中的键值对,key不存在时,会报错

a = {"a":1,"b":2,"c":3}del a["a"]print(a)


 

2. s.popitem()方法
随机删除字典中的键值对,一般都会删除最后一个键值对
删除之后,它会将删除的key-value作为返回值返回,
注意:返回的是一个元组:第一个元素是key,第二个元素是value
当使用popitem()来删除一个空字典时,会抛出异常
#q = a.popitem()
 


3. pop(key[,default])
根据key删除字典中的key-value,并返回所删除的value值
如果删除不存在的key,则会抛出异常
如果指定了默认值(default),再删除不存在的key时,此时不会报错,而是直接返回默认值

a = {"a":1,"b":2,"c":3}q = a.pop("o",9)print(q)print(a)


4. s.clear()方法
删除字典中的所有的项(清空字典)

a = {"a":1,"b":2,"c":3}a.clear()print(a)


5. s.copy()方法
该方法用于对字典进行浅复制 #注意:浅复制只会简单的对象内部的值
如果内部的值也是一个可变对象,这个可变对象不会被复制
复制以后的对象,和原对象是独立的,修改一个不会影响另一个

a = {"a":1,"b":2,"c":3}b = a.copy()b["a"] = 343print(a)print(b)#检查一下两个变量的idprint(id(a))print(id(b))


下面演示浅复制

d = {"a":{"name":"唐僧","age":34},"b":2,"c":3}print(d)d2 = d.copy()print(d2)d["a"]["name"] = "无效"print(d)print(d2)

遍历字典
方法一:
keys():该方法会返回所有的key
该方返回的是序列,序列中保存有字典的所有的key

d = {"a":1,"b":2,"c":3,"d":4,"e":5}for k in d.keys() :    print(k,d[k])print(d[k])print(d.keys())


方法二:
values()
该方法返回一个序列,序列中保存的是字典中的所有的值

for m in d.values() :    print(m)


方法三:
该方法会返回字典中所有的项
它会返回一个序列,这个序列中包含有双值子序列
双值分别是:字典中的key和value

print(d.items())for q,v in d.items() :    print(q,"=",v)


梧高凤必至!

 

 

 

 

 

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐