字典结构作为python的基本数据结构之一,由键值对组成{key:value},其中key的值是唯一的,而value的值可以重复。在日常垒码过程中用的比较频繁,故在这里做一个简单的总结,
(0)初始化
###case 1
dic={}
dic=dict()
###case 2
lst = [1,3,5,7,9] #存放字典的键
dic = {}.fromkeys(lst,0) #将字典中所有键的值初始化为0
###或者通过defaultdict()来进行初始化
from collections import defaultdict
dic=defaultdict(list)
(1)增
创建字典的方式一般有两种,
- info={"name":"zhangsan"}
- info=dict(name="zhangsan") ##注意此时的name不要加引号
当一个字典创建并初始化后想要再增加字段时,可以直接通过info["sex"]="man"来添加即可。如果想要一次批量添加还可以借助update函数,具体使用如下
info=dict(name="zhangsan")
info.update("sex":"man","age":18,"score":100)
(2)删
对于字典元素的剔除处理,一般有两种方式,具体如下
info={"name"="zhangsan","sex"="man","age"=18}
###利用pop实现剔除
info.pop("age")
###利用python内置函数del
del info["sex"]
(3)改
这里指的是对字典的value值进行修改,可以直接通过info["name"]="lisi"实现,至于key值的一般不能直接修改(因为key是hash),间接修改的方式如下:
info={"name":"zhangsan","sex":"man","age":18}
info["height"]=info.pop("age")
(4)查
字典由键值对组成,想要实现对key值的遍历可以利用字典的keys属性,对value值的遍历可以通过values的属性,同时遍历的话可以考虑items属性,具体实例如下
info={"name":"zhangsan","sex":"man","age":18}
#对键值遍历
for i in info.keys():
print(i)
#对valeus遍历
for j in info.values():
print(j)
#对整个字典进行遍历
for m,n in info.items():
st="key:{},value:{}".format(m,n)
print(st)
补:
常见的字典排序有按key值或value值排序两种,借助python内置的sorted函数,这里做如下总结,
info={}
info[2] = 56
info[1] = 2
info[5] = 12
info[4] = 24
info[6] = 18
info[3] = 323
print(info)
###对key值进行排序
for i in sorted(info): ###默认是升序,若想变为降序,将reverse属性变为True
print((i,info[i]), end =" ")
###对value值进行排序,其中key为排列的依据
for i in sorted(info.items(), key = lambda k:(k[1], k[0])):
print(i)
###按照字典序进行排列
lis = [{ "name" : "Taobao", "age" : 100},
{ "name" : "Runoob", "age" : 7 },
{ "name" : "Google", "age" : 100 },
{ "name" : "Wiki" , "age" : 200 }]
# 通过 age 升序排序
print ("列表通过 age 升序排序: ")
print (sorted(lis, key = lambda i: i['age']) )
print ("\r")
# 先按 age 排序,再按 name 排序
print ("列表通过 age 和 name 排序: ")
print (sorted(lis, key = lambda i: (i['age'], i['name'])) )
print ("\r")
# 按 age 降序排序
print ("列表通过 age 降序排序: ")
print (sorted(lis, key = lambda i: i['age'],reverse=True) )
同样的,由于字典是无序类型,没有自带的排序方法,但可以先转化为list,然后借助列表的sort()方法来进行排序,
tmp={1:23,2:10,3:15}
t=list(tmp.items()) ##t为[(1,23),(2,10),(3,15)]
print(t)
t.sort(key=lambda x:(x[1],x[0]),reverse=True)
print(dict(t)) ##输出结果为{1: 23, 3: 15, 2: 10}
参考链接:
https://blog.csdn.net/cxcxrs/article/details/82459800(在Python中,字典按值排序)
https://www.runoob.com/python3/python-sort-dictionaries-by-key-or-value.html(Python 按键(key)或值(value)对字典进行排序)