概述
字典
字典存储的数据类型是key-value的类型,和java中的map非常类似的数据类型.接下来看一下具体的定义
定义:字典是python中唯一的映射类型,通过键值对的形式存储数据.通过key进行哈希运算,依据运算结果决定value的存放位置.so,字典是无序的,key必须是唯一的.
语法:定义一个字典
#创建一个字典 info of people zhang_people = {"name":"zhangsan","age":22,"job":"it"}
创建字典之后就不得不说一下数据的可变类型,和不可变类型.
不可变类型:数字,字符串,元组
可变类型:字典,列表
字典的key只能是不可变的类型,不能是可变类型.
验证字典的唯一性
#验证字典key的唯一性
li_people = {"name":"li si","name":"wang wu"}
print(li_people)
可以看出来假如 key完全相同的时候,后面的一个会将前面的一个key的value重新赋值.
当key不同,value相同的时候
#验证value是否是惟一的
zhang_people = {"name":"zhangsan","age":"zhangsan","job":"it"}
print(zhang_people)
根据运算结果,在key不同的时候value是可以相同的,同时也验证了字典是无序的
当key是可变类型的时候
① list作为key
#列表作为key
zhang_people = {["name","age"]:"zhangsan","age":"zhangsan","job":"it"}
print(zhang_people)
② dictionary 作为key
#字典作为key
zhang_people = {{"name":"zhang"}:"zhangsan","age":"zhangsan","job":"it"}
print(zhang_people)
当key是不可变类型的时候
①数字
#可变类型数字作为key
zhang_people = {1:"num1",2:"num2",3:"num3",4:"num4"}
print(zhang_people)
② 字符串
#字符串作为key
zhang_people = {"name":"zhangsan","age":22,"job":"it"}
print(zhang_people)
③ 元组
#元组作为key
zhang_people = {(2,3):"2,3","name":"zhang","age":22,"job":"it"}
print(zhang_people)
创建字典的方式
#方式一
zhang_people = {"name":"zhangsan","age":22,"job":"it"}
#方式二
li_people = dict((("name","lisi"),("age",22),("job","it")))
print(li_people)
方式二是使用dict方法来创建字典的,
增加
方式一
#字典里增加元素
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
#添加 1114 : 波多老师
av[1114] = "波多老师"
print(av)
方式二
#setdefault方法
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
boduo = av.setdefault(1114,"波多老师")
print(av)
print(boduo)
limei = av.setdefault(1114,"里美那啥那啥")
print(av)
print(limei)
从运行结果可以看出来setdefault方法增加的元素,在原字典中没有的时候则会进行新增操作同时返回新增的值,在原字典中已经有相同的key的时候则不会进行新增操作同时返回原字典中相同key对应的value
查找
①通过key来查找value
#find
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
print(av[1111])
②查找所有的key
#find all of the key
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
print(av.keys())
可以看出来dict_keys([1112,1113,1114]) 并不是list类型也不是元组类型而是dict_keys类型
将dict_keys转换为list类型方法
print(type(list(av.keys())))#运行结果是<class 'list'>
③查找所有的value
#find all of the values
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
print(type(av.values()))#result:<class 'dict_values'>
print(type(list(av.values())))#result:<class 'list'>
④查找所有的item
#find all of the items
av = {1111:"苍老师",1112:"小泽玛利亚",1113:"松岛枫"}
print(type(av.items()))#result:<class 'dict_items'>
print(type(list(av.items())))#result:<class 'list'>
修改
方式一
#update the dictionary
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
av[1111] = "苍井空"
print(av)#result:{1112: '小泽玛利亚', 1113: '松岛枫', 1111: '苍井空'}
方式二
#字典的update方法
av = {"欧美":"高清","日韩":"无码"}
print(av)#result:{'欧美': '高清', '日韩': '无码'}
str = {"欧美":"很大","日韩":"小麻雀"}
av.update(str)#在使用update的时候假如有相同的key则会进行value覆盖
print(av)#result:{'欧美': '很大', '日韩': '小麻雀'}
print(str)#result:{'欧美': '很大', '日韩': '小麻雀'}
num = {1:"num1",2:"num2"}
av.update(num)#在使update的时候如果没有相同的key则会添加进去
print(av)#result:{1: 'num1', 2: 'num2', '日韩': '小麻雀', '欧美': '很大'}
删除
方法一
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
del av[1111]
print(av)#result:{1112: '小泽玛利亚', 1113: '松岛枫'}
通过del方法删除,将key和value都删除掉了
方法二
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
av.clear()
print(av)#result:{}
clear方法是将字典清空,同时字典还保留着
方法三
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
value_1111 = av.pop(1111)
print(av)#result:{1112: '小泽玛利亚', 1113: '松岛枫'}
print(value_1111)#result:苍老师
使用pop会删除对应的键值对,同时会返回删除的key对应的value
方法四
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
av.popitem()
print(av)#result:{1113: '松岛枫', 1111: '苍老师'}
使用popitem方法括号中没有参数,此时会在字典中随机的删除一个元素.
我手贱的在popitem括号中加了"苍老师"参数报错,报错类型如下
方法五
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
del av
print(av)
使用del后接字典的名字 是直接在内存里删除了整个字典,
字典的遍历
方式一
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
for key in av:
print(key,av[key])
方式二
av = {1111: "苍老师", 1112: "小泽玛利亚", 1113: "松岛枫"}
for k,v in av.items():
print(k,v)
使用items循环会有转换list的操作推荐使用方式1
ok,字典基本上常用的方式就这些,字典今天就先学到这里
最后
以上就是阔达金毛为你收集整理的python_字典的全部内容,希望文章能够帮你解决python_字典所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复