我是靠谱客的博主 阔达金毛,最近开发中收集的这篇文章主要介绍python_字典,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

字典

字典存储的数据类型是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_字典所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部