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

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

liuian 2025-02-19 12:55 11 浏览

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字典相关的面试题你都能答出。

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

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

相关推荐

GANs为何引爆机器学习?这篇基于TensorFlow的实例教程为你解惑!

「机器人圈导览」:生成对抗网络无疑是机器学习领域近三年来最火爆的研究领域,相关论文层出不求,各种领域的应用层出不穷。那么,GAN到底如何实践?本文编译自Medium,该文作者以一朵玫瑰花为例,详细阐...

高丽大学等机构联合发布StarGAN:可自定义表情和面部特征

原文来源:arXiv、GitHub作者:YunjeyChoi、MinjeChoi、MunyoungKim、Jung-WooHa、SungKim、JaegulChoo「雷克世界」编译:嗯~...

TensorFlow和PyTorch相继发布最新版,有何变化

原文来源:GitHub「机器人圈」编译:嗯~阿童木呀、多啦A亮Tensorflow主要特征和改进在Tensorflow库中添加封装评估量。所添加的评估量列表如下:1.深度神经网络分类器(DNNCl...

「2022 年」崔庆才 Python3 爬虫教程 - 深度学习识别滑动验证码缺口

上一节我们使用OpenCV识别了图形验证码躯壳欧。这时候就有朋友可能会说了,现在深度学习不是对图像识别很准吗?那深度学习可以用在识别滑动验证码缺口位置吗?当然也是可以的,本节我们就来了解下使用深度...

20K star!搞定 LLM 微调的开源利器

LLM(大语言模型)微调一直都是老大难问题,不仅因为微调需要大量的计算资源,而且微调的方法也很多,要去尝试每种方法的效果,需要安装大量的第三方库和依赖,甚至要接入一些框架,可能在还没开始微调就已经因为...

大模型DeepSeek本地部署后如何进行自定义调整?

1.理解模型架构a)查看深度求索官方文档或提供的源代码文件,了解模型的结构、输入输出格式以及支持的功能。模型是否为预训练权重?如果是,可以在预训练的基础上进行微调(Fine-tuning)。是否需要...

因配置不当,约5000个AI模型与数据集在公网暴露

除了可访问机器学习模型外,暴露的数据还可能包括训练数据集、超参数,甚至是用于构建模型的原始数据。前情回顾·人工智能安全动态向ChatGPT植入恶意“长期记忆”,持续窃取用户输入数据多模态大语言模型的致...

基于pytorch的深度学习人员重识别

基于pytorch的深度学习人员重识别Torchreid是一个库。基于pytorch的深度学习人员重识别。特点:支持多GPU训练支持图像的人员重识别与视频的人员重识别端到端的训练与评估简单的re...

DeepSeek本地部署:轻松训练你的AI模型

引言:为什么选择本地部署?在AI技术飞速发展的今天,越来越多的企业和个人希望将AI技术应用于实际场景中。然而,对于一些对数据隐私和计算资源有特殊需求的用户来说,云端部署可能并不是最佳选择。此时,本地部...

谷歌今天又开源了,这次是Sketch-RNN

前不久,谷歌公布了一项最新技术,可以教机器画画。今天,谷歌开源了代码。在我们研究其代码之前,首先先按要求设置Magenta环境。(https://github.com/tensorflow/magen...

Tensorflow 使用预训练模型训练的完整流程

前面已经介绍了深度学习框架Tensorflow的图像的标注和训练数据的准备工作,本文介绍一下使用预训练模型完成训练并导出训练的模型。1.选择预训练模型1.1下载预训练模型首先需要在Tensorf...

30天大模型调优学习计划(30分钟训练大模型)

30天大模型调优学习计划,结合Unsloth和Lora进行大模型微调,掌握大模型基础知识和调优方法,熟练应用。第1周:基础入门目标:了解大模型基础并熟悉Unsloth等工具的基本使用。Day1:大模...

python爬取喜马拉雅音频,json参数解析

一.抓包分析json,获取加密方式1.抓包获取音频界面f12打开抓包工具,播放一个(非vip)视频,点击“媒体”单击打开可以复制URL,发现就是我们要的音频。复制“CKwRIJEEXn-cABa0Tg...

五、JSONPath使用(Python)(json数据python)

1.安装方法pipinstalljsonpath2.jsonpath与Xpath下面表格是jsonpath语法与Xpath的完整概述和比较。Xpathjsonpath概述/$根节点.@当前节点...

Python网络爬虫的时候json=就是让你少写个json.dumps()

大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Python网络爬虫的问题,提问截图如下:登录请求地址是这个:二、实现过程这里【甯同学】给了一个提示,如下所示:估计很多小伙伴和...