python之dict操作

        字典结构作为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)对字典进行排序)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值