【学习资料】 - Python3基础之字典详解
Python3基础之字典详解
上一篇讲了列表的一些基本操作与方法,这里再简单讲下字典Dict的方法。
相对于列表,字典的一个元素是由键值对组成K:V,所以字典的索引方式查找与列表略有不同,字典是以键为索引值去查找。
字典的格式如下:
dict = {key1 : value1, key2 : value2, ... }
其中里面的key是唯一性的,value是可以重复的。字典一般用于记录身份信息,表结构获取(表字段也是唯一性的,相当于字典的key)等地方。
扩展:json的格式跟字典格式一样,但json是str类型。
字典推导式
同样先来扩展下字典推导式,相对于列表推导式,字典推导式用的比较少。
字典中的键值互换
dic = {"A":"a","B":"b","C":"c"}
dic = {v:k for k,v in dic.items()} # 从返回单元素x,变为键值对形式k:v
print(dic)

快速组合字典
keylist = ["a","b","c","d"]
valuelist = ["python","java","C++","R"]
dic = {k:v for k,v in zip(keylist,valuelist)} # zip函数把两列表按顺序返回一个有元组对的新列表
print(dic)

字典索引
我i们来回忆下列表的索引查找
lst = [1,2,3,4,5,6]
用lst[index]方式去查找里面的某个值。但字典不同,由于字典是键值对,所以没有明确的index对应的元素,只有键和值,下面我们一起看看字典的类索引方式查找。
dic = {"name":"mike","age":18,"address":"shanghai"}
print(dic["name"])
print(type(dic["name"]))

通过键的索引找到了对应的值,如果是二维字典,只是多加了一步遍历循环就能批量跑出所有name对应的值。
该索引方法差不多能解决80%的字典查找问题,因为一般键在表结构确认后就是固定的了。
其实字典有专门有一个通过键去查找值的方法,那就是get()方法。
字典方法
get()方法
跟字典索引一样,通过键去找出值。
语法格式如下:
dict.get(key)
举例:
dic = {"name":"mike","age":18,"address":"shanghai"}
print(dic["name"])
print(type(dic["name"]))
print(dic.get('name'))
print(type(dic.get('name')))

假设读者不知道某个字典中到底有没有这个键,我们可以给这个假想的键赋一个假想的值,如下:
dic = {"name":"mike","age":18,"address":"shanghai"}
print(dic.get('work')) # 键不存在
print(type(dic.get('work')))
print(dic.get('work',"IT")) # 给不存在的键赋值

可以看到如果查找的键不存在,通过get方法不会出现报错,只返回None,而如果用字典索引的方式查找不存在的键,那就会报错:
print(dic["work"])

setdefault()方法
与get()方法类似,如果键不存在,则返回设定值,但区别在于setdefault方法会把该不存在的键添加到字典中。
dic = {"name":"mike","age":18,"address":"shanghai"}
print(dic.setdefault('work',"IT"))
print(dic)

has_key()方法
为了防止上述的一些不必要的报错,第一种方法是可以先判断下键是否存在,就要用到has_key()方法,返回True/false的bool类型,方式等同in。
if dic.has_key("work"): # if "work" in dic:
print(dic["work"])
keys()方法/values()方法
第二种方法先列出字典所有的key,使用keys()方法,返回list类型。
print(dic.keys())
print(dic.values()) # 返回所有的值,是迭代器
items()方法
有些时候,我们就是要取出键值对来进行分析,则可以使用items()方法,返回list类型,且里面的元素是tuple类型。
print(dic.items())

是迭代器,所有需要通过遍历来取出里面的键值组合。
for k,v in dic.items():
print("key is ",k)
print("value is ",v)

上述方法就是关于字典查找的一些常用方法。
字典添加
在python中, 如果需要在字典中新增键值对元素,可以直接用赋值方式添加。
dic = {"name":"mike","age":18,"address":"shanghai"}
dic["work"] = "IT"
print(dic)

如果键是存在的,则update值
dic["name":"python"]
print(dic)

update()方法
把字典2号的键值对添加到字典1号中,使用update()方法实现。
dic1 = {"name":"mike","age":18,"address":"shanghai"}
dic2 = {"name":"mike","work":"IT","sex":"male"}
dic1.update(dic2)
print(dic1)

重复的数据不会添加进来,保持字典键的唯一性。
字典删除
与列表一样的方法,pop(),clear(),del方法,这里就简单说下。
删除一个键值对:
del dic["age"]
dic.pop("age") # 返回删除键对应的值
删除整个字典:
dic.clear()
del dic
还有一个删除方法:popitem(),删除末尾的一个键值对,没有参数,返回删除的键值对。
dic.popitem()

字典复制
copy()方法
复制一个字典,返回一个浅复制字典对象
newdic = dic.copy()
print(newdic)

fromkeys()方法
该方法是独立创建一个新字典,提供键列表,值可选(不加默认返回值为None)
lst = ["a","b","c","d"]
dic = dic.fromkeys(lst)
print(dic)

dic = dic.fromkeys(lst,"python")
print(dic)

有没有感觉像是表内新增一行数据,表字段对应的值都为None。
上述就是python字典的一些常用操作手法,字典在python中比较常用,应该说键值对方式存取在编程中是很常见的,redis数据库就是一个键值对存取方式的非关系型内存存取数据库。

浙公网安备 33010602011771号