千家信息网

Python字典使用技巧有哪些

发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,今天小编给大家分享一下Python字典使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起
千家信息网最后更新 2024年11月17日Python字典使用技巧有哪些

今天小编给大家分享一下Python字典使用技巧有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

字典(Dictionary)是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据,由键(key)和值(value)成对组成,键和值中间以冒号:隔开,项之间用逗号隔开,整个字典由大括号{}括起来,格式如下:

dic = {key1 : value1, key2 : value2 }

字典也被称作关联数组或哈希表,下面是几种常见的字典创建方式:

# 方法1dic1 = { 'Author' : 'Python' , 'age' : 99 , 'sex' : '男' }# 方法2lst = [('Author', 'Python'), ('age', 99), ('sex', '男')]dic2 = dict(lst)# 方法3dic3 = dict( Author = 'Python', age = 99, sex = '男')# 方法4list1 = ['Author', 'age', 'sex']list2 = ['Python', 99, '男']dic4 = dict(zip(list1, list2))

字典创建的方式还有很多种,这里不再赘述。

字典由 dict 类代表,可以使用 dir(dict) 来查看该类包含哪些方法,输入命令,可以看到如下输出结果:

print('methods = ',methods)methods = ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

字典的方法和属性有很多种,这里我们重点介绍以下11种方法:

['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']

1.dict.clear()

clear() 用于清空字典中所有元素(键-值对),对一个字典执行 clear() 方法之后,该字典就会变成一个空字典:

list1 = ['Author', 'age', 'sex']list2 = ['Python', 99, '男']dic1 = dict(zip(list1, list2))# dic1 = {'Author': 'Python', 'age': 99, 'sex': '男'}dic1.clear()# dic1 = {}

2.dict.copy()

copy() 用于返回一个字典的浅拷贝:

list1 = ['Author', 'age', 'sex']list2 = ['Python', 99, '男']dic1 = dict(zip(list1, list2))dic2 = dic1 # 浅拷贝: 引用对象dic3 = dic1.copy() # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用dic1['age'] = 18# dic1 = {'Author': 'Python', 'age': 18, 'sex': '男'}# dic2 = {'Author': 'Python', 'age': 18, 'sex': '男'}# dic3 = {'Author': 'Python', 'age': 99, 'sex': '男'}

其中 dic2 是 dic1 的引用,所以输出结果是一致的,dic3 父对象进行了深拷贝,不会随dic1 修改而修改,子对象是浅拷贝所以随 dic1 的修改而修改,注意父子关系。

拓展深拷贝:copy.deepcopy()

import copylist1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))dic2 = dic1dic3 = dic1.copy()dic4 = copy.deepcopy(dic1)dic1['age'].remove(18)dic1['age'] = 20# dic1 = {'Author': 'Python', 'age': 20, 'sex': '男'}# dic2 = {'Author': 'Python', 'age': 20, 'sex': '男'}# dic3 = {'Author': 'Python', 'age': [99], 'sex': '男'}# dic4 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'}

dic2 是 dic1 的引用,所以输出结果是一致的;dic3 父对象进行了深拷贝,不会随dic1 修改而修改,子对象是浅拷贝所以随 dic1 的修改而修改;dic4 进行了深拷贝,递归拷贝所有数据,相当于完全在另外内存中新建原字典,所以修改dic1不会影响dic4的数据

3.dict.fromkeys()

fromkeys() 使用给定的多个键创建一个新字典,值默认都是 None,也可以传入一个参数作为默认的值:

list1 = ['Author', 'age', 'sex']dic1 = dict.fromkeys(list1)dic2 = dict.fromkeys(list1, 'Python')# dic1 = {'Author': None, 'age': None, 'sex': None}# dic2 = {'Author': 'Python', 'age': 'Python', 'sex': 'Python'}

4.dict.get()

get() 用于返回指定键的值,也就是根据键来获取值,在键不存在的情况下,返回 None,也可以指定返回值:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))Author = dic1.get('Author')# Author = Pythonphone = dic1.get('phone')# phone = Nonephone = dic1.get('phone','12345678')# phone = 12345678

5.dict.items()

items() 获取字典中的所有键-值对,一般情况下可以将结果转化为列表再进行后续处理:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))items = dic1.items()print('items = ', items)print(type(items))print('items = ', list(items))# items = dict_items([('Author', 'Python'), ('age', [18, 99]), ('sex', '男')])# # items = [('Author', 'Python'), ('age', [18, 99]), ('sex', '男')]

6.dict.keys()

keys() 返回一个字典所有的键:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))keys = dic1.keys()print('keys = ', keys)print(type(keys))print('keys = ', list(keys))# keys = dict_keys(['Author', 'age', 'sex'])# # keys = ['Author', 'age', 'sex']

7.dict.pop()

pop() 返回指定键对应的值,并在原字典中删除这个键-值对:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))sex = dic1.pop('sex')print('sex = ', sex)print('dic1 = ',dic1)# sex = 男# dic1 = {'Author': 'Python', 'age': [18, 99]}

8.dict.popitem()

popitem() 删除字典中的最后一对键和值:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))dic1.popitem()print('dic1 = ',dic1)# dic1 = {'Author': 'Python', 'age': [18, 99]}

9.dict.setdefault()

setdefault() 和 get() 类似, 但如果键不存在于字典中,将会添加键并将值设为default:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))dic1.setdefault('Author', '')print('dic1 = ',dic1)# dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'}dic1.setdefault('name', '')print('dic1 = ',dic1)# dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男', 'name': ''}

10.dict.update(dict1)

update() 字典更新,将字典dict1的键-值对更新到dict里,如果被更新的字典中己包含对应的键-值对,那么原键-值对会被覆盖,如果被更新的字典中不包含对应的键-值对,则添加该键-值对:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))print('dic1 = ',dic1)# dic1 = {'Author': 'Python', 'age': [18, 99], 'sex': '男'}list3 = ['Author', 'phone' ]list4 = ['', 12345678]dic2 = dict(zip(list3, list4))print('dic2 = ',dic2)# dic2 = {'Author': '', 'phone': 12345678}dic1.update(dic2)print('dic1 = ',dic1)# dic1 = {'Author': '', 'age': [18, 99], 'sex': '男', 'phone': 12345678}

11.dict.values()

values() 返回一个字典所有的值:

list1 = ['Author', 'age', 'sex']list2 = ['Python', [18,99], '男']dic1 = dict(zip(list1, list2))values = dic1.values()print('values = ', values)print(type(values))print('values = ', list(values))# values = dict_values(['Python', [18, 99], '男'])# # values = ['Python', [18, 99], '男']

以上就是"Python字典使用技巧有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

字典 拷贝 方法 对象 更新 数据 知识 篇文章 结果 输出 使用技巧 技巧 一致 内容 情况 方式 目录 不同 很大 之间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库删除 修改 更新 三国志战略版转服务器功能 汽车制造厂要软件开发吗 数据库改主机名 弹性网络技术 软件开发课程展板设计 命中我行高风险数据库 我的世界乐天宝可梦服务器 在厦门用什么打车软件开发 东莞网络安全管理 图像数据库索引技术 网络安全操作系统安全实例 医院网络安全监测记录 中国互联网信息中心 科技处 高中网络安全主题班会活动方案 宏盛互联网科技有限公司 员工档案数据库 北京和创智信网络技术有限公司 原神国际服服务器分几个 电脑使用代理服务器选项关不掉 达梦数据库没有查询权限 搜索儿童网络安全图片 医院门旁屏是用什么软件开发的 音响软件开发的注意事项 中国常见的数据库 数据库中如何关闭代码窗口 安卓手机游戏服务器需要什么宽带 数据库实现停车管理系统 网络安全体系构成要素中 数据库表字段存网络数据报文
0