百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python字典操作全家桶,超全!!,字典相关操作都来这儿找

itomcoil 2025-02-16 21:09 20 浏览

python中字典相关操作,在实际开发中是必不可少的部分,除了它本身可以构造、存储数据外,它的结构和json类似,还可以互转。

在web开发、数据库查询结果集等都是以json或者字典形式存在,因此掌握字典相关操作是一个开发人员必备技能,下面的总结,按需获取,复制运行即可得出相应结果

1、创建字典(create)

 ====================基础创建=====================
dict_ = {}  # 直接创建空的字典--->最常用
dict_default = {"key1":"value1",'key2':'value2'}   # 赋值创建带默认值的字典--->创建默值字典最常用
dict_key = dict(key1="value1",key2="value2")   # 通过关键字dict创建--->使用较少
dict_fromkeys = dict.fromkeys(["key1","key2","key3"],"6666")    # fromkeys创建  使用较少

====================中高级创建======================
list_ = [("key1","value1"),("key2","value2")]   
dict_list = dict(list_)    # 列表嵌套二次元祖以及dict关键字创建,--->中等
dict_advance = { str(i):"value%s"%i for i in range(5) } # 字典解析创建字典--->常用

====================实际开发中常用构造================
list1,list2 = ["age","address","name"],[18,"重庆","张三"]
dict_advance2 = { key:value for key,value in zip(list1,list2) } # 字典解析创建字典(中高级用法)--->  常用
dict_zip = dict(zip(list1,list2))   # 最常用,代码短又简单,zip中防止可迭代对象即可,列表、元祖,字符串均可

执行上面代码后输出:
{}
{'key1': 'value1', 'key2': 'value2'}
{'key1': 'value1', 'key2': 'value2'}
{'key1': '6666', 'key2': '6666', 'key3': '6666'}
{'key1': 'value1', 'key2': 'value2'}
{'0': 'value0', '1': 'value1', '2': 'value2', '3': 'value3', '4': 'value4'}
{'age': 18, 'address': '重庆', 'name': '张三'}
{'age': 18, 'address': '重庆', 'name': '张三'}

2、字典新增元素(add)

dict_["age"] = 18       # dict[key] = value 方式新增--->最常用

value= {"name":"张三"}  # dict中update 方式新增--->常用
dict_.update(value)

3、字典删除元素(del)

dict_ = {'age': 18, 'address': '重庆', 'name': '张三'}

 =======================根据key 删除元素=================
del dict_["age"]    # 普通删除--->基本不用
dict_.pop("address")  #升级版删除--->最常用
dict_ = { key:value for key,value in dict_.items() if key != "name" }  # 字典解析删除---> 一般不使用,面试或装逼用
执行上面三句后输出:
{}
  =======================根据value 删除元素=================
dict_ = { key:value for key,value in dict_.items() if value != 18 }  # 通过字典解析删除,--->最常用,一般封装成方法使用
输出:
{ 'address': '重庆', 'name': '张三'}
  =======================删除、清空字典=================
dict_ = {'age': 18, 'address': '重庆', 'name': '张三'}
del  dict_       # 将字典从内存中删除,后面引用报错  --->不常用
dict_.clear()   # 清空字典中的所有key=value  --->不常用    

3、字典修改元素(modify)

dict_ = {'age': 18, 'address': '重庆', 'name': '张三'}

=======================修改字典值=================
dict_["age"] = 19     --->最常用
输出:
{'age': 19, 'address': '重庆', 'name': '张三'}
=======================修改字典key================
dict_.update({"newkey":dict_.pop("age")})   #封装成方法配合使用 --->常用
输出:
{'address': '重庆', 'name': '张三', 'newkey': 18}

4、字典相关元素获取(Find)

dict_ = {'age': 18, 'address': '重庆', 'name': '张三'}
=======================获取字典中所有key================
keys = list(dict_.keys())  #返回值是列表  --->常用
print(keys)
输出:
['age', 'address', 'name']
=======================获取字典中所有value================
keys = list(dict_.values())    #返回值是列表  --->常用
print(keys)
输出:
[18, '重庆', '张三']
=======================获取字典中所有key,value================
keys = list(dict_.items())  --->最常用
print(keys)
输出:
[('age', 18), ('address', '重庆'), ('name', '张三')]
======================根据key获取value===================
value1 = dict_["age"]  # key 不存在是会报错   --->常用
value2 = dict_.get("age",None)  # key 不存在时不会报错,并且可设置默认值,开发中最常用 --->常用
value3 = dict_.get("fff",None)  # 演示key不存在这种默认值 --->最常用,也是建议使用
value4 = "".join([ str(dict_[key]) for key in dict_.keys() if key=="age" ])  # 装逼写法,基础差的绝对看不懂
print(value1,value2,value3,value4)
输出:
18 18 None 18
========================根据value获取key===================
key1 = {value:key for key,value in dict_.items() }.get("重庆")  # 采用字典解析,key,value互换生成新的字典在获取值,一般封装成方法使用
key2 = [ key for key,value in dict_.items() if value=="重庆" ][0] # 采用列表解析获取key,一般封装成方法使用
key3 = "".join([ key[0] for key in dict_.items() if key[1] == "重庆" ]) # 采用列表解析获取key,一般封装成方法使用
print(key1,key2,key3)
输出:
address address address

5、字典排序(order)

======================根据key排序===================
  dict_ = {'15': 18, '12': '重庆', '11': '张三'}

new_dict1 = dict(sorted(dict_.items()))   #通过dict_.items()解析成元祖,在给元祖排序,在转换成字典
new_dict2 = {key:dict_[key]for key in sorted(dict_.keys())}   #通过dict_.keys()获取所以key,在key祖排序,字典解析生成字典
print(new_dict1)
print(new_dict2)
输出
{'11': '张三', '12': '重庆', '15': 18}
{'11': '张三', '12': '重庆', '15': 18}
======================根据value排序===================
  
  d = {'语文': 18, '数学': 88, '英语': 66,'物理': 22}

①new_order1 ={ va_ke[1]:va_ke[0] for va_ke in sorted( [(va,ke) for ke,va in sorted(d.items())])}
②new_order2 ={ va_ke[1]:va_ke[0] for va_ke in sorted(zip(d.values(),d.keys()))}
③new_order3 ={ key:va for key,va in sorted(d.items(),key=lambda items:items[1])}
print(new_order1)
print(new_order2)
print(new_order3)
输出:
{'语文': 18, '物理': 22, '英语': 66, '数学': 88}
{'语文': 18, '物理': 22, '英语': 66, '数学': 88}
{'语文': 18, '物理': 22, '英语': 66, '数学': 88}
解释:
①通过列表解析 [(va,ke) for ke,va in sorted(d.items())] 生成元祖(value,key)元祖,在给元祖排序,在用字典解析生成字典
②先通过(d.values(),d.keys())组装(value,key),在吧元祖压缩成一个列表,给列表排序,在用字典解析生成字典
③利用sorted可以指定排序关键字的原理,指定以value进行排序,先通过d.items()获取key,value的迭代对象,
然后通过key,指定排序关键字为value,sorted中指定排序关键字需要绑定函数,因此用lambda获取value

好了,相信你看了上面内容,慢慢练习,python的字典操作对你来说 so easy!,对了基本有关python字典相关的面试题你都能答出。

点赞收藏,忘记了就翻出来瞧瞧,慢慢的 它就是你的咯!

有看不懂的地方,,欢迎留言咨询,有问必答,相互学习,合作共赢~~~

相关推荐

selenium(WEB自动化工具)

定义解释Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),MozillaF...

开发利器丨如何使用ELK设计微服务中的日志收集方案?

【摘要】微服务各个组件的相关实践会涉及到工具,本文将会介绍微服务日常开发的一些利器,这些工具帮助我们构建更加健壮的微服务系统,并帮助排查解决微服务系统中的问题与性能瓶颈等。我们将重点介绍微服务架构中...

高并发系统设计:应对每秒数万QPS的架构策略

当面试官问及"如何应对每秒几万QPS(QueriesPerSecond)"时,大概率是想知道你对高并发系统设计的理解有多少。本文将深入探讨从基础设施到应用层面的解决方案。01、理解...

2025 年每个 JavaScript 开发者都应该了解的功能

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.Iteratorhelpers开发者...

JavaScript Array 对象

Array对象Array对象用于在变量中存储多个值:varcars=["Saab","Volvo","BMW"];第一个数组元素的索引值为0,第二个索引值为1,以此类推。更多有...

Gemini 2.5编程全球霸榜,谷歌重回AI王座,神秘模型曝光,奥特曼迎战

刚刚,Gemini2.5Pro编程登顶,6美元性价比碾压Claude3.7Sonnet。不仅如此,谷歌还暗藏着更强的编程模型Dragontail,这次是要彻底翻盘了。谷歌,彻底打了一场漂亮的翻...

动力节点最新JavaScript教程(高级篇),深入学习JavaScript

JavaScript是一种运行在浏览器中的解释型编程语言,它的解释器被称为JavaScript引擎,是浏览器的一部分,JavaScript广泛用于浏览器客户端编程,通常JavaScript脚本是通过嵌...

一文看懂Kiro,其 Spec工作流秒杀Cursor,可移植至Claude Code

当Cursor的“即兴编程”开始拖累项目质量,AWS新晋IDEKiro以Spec工作流打出“先规范后编码”的系统工程思维:需求-设计-任务三件套一次生成,文档与代码同步落地,复杂项目不...

「晚安·好梦」努力只能及格,拼命才能优秀

欢迎光临,浏览之前点击上面的音乐放松一下心情吧!喜欢的话给小编一个关注呀!Effortscanonlypass,anddesperatelycanbeexcellent.努力只能及格...

JavaScript 中 some 与 every 方法的区别是什么?

大家好,很高兴又见面了,我是姜茶的编程笔记,我们一起学习前端相关领域技术,共同进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力在JavaScript中,Array.protot...

10个高效的Python爬虫框架,你用过几个?

小型爬虫需求,requests库+bs4库就能解决;大型爬虫数据,尤其涉及异步抓取、内容管理及后续扩展等功能时,就需要用到爬虫框架了。下面介绍了10个爬虫框架,大家可以学习使用!1.Scrapysc...

12个高效的Python爬虫框架,你用过几个?

实现爬虫技术的编程环境有很多种,Java、Python、C++等都可以用来爬虫。但很多人选择Python来写爬虫,为什么呢?因为Python确实很适合做爬虫,丰富的第三方库十分强大,简单几行代码便可实...

pip3 install pyspider报错问题解决

运行如下命令报错:>>>pip3installpyspider观察上面的报错问题,需要安装pycurl。是到这个网址:http://www.lfd.uci.edu/~gohlke...

PySpider框架的使用

PysiderPysider是一个国人用Python编写的、带有强大的WebUI的网络爬虫系统,它支持多种数据库、任务监控、项目管理、结果查看、URL去重等强大的功能。安装pip3inst...

「机器学习」神经网络的激活函数、并通过python实现激活函数

神经网络的激活函数、并通过python实现whatis激活函数感知机的网络结构如下:左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。用数学式来表示感知机:上面这个数学式子可以被改写:...