11、字典
字典
基本概念
- 字典是Python中唯一的映射类型(哈希表)。
- 字典对象是可变的,但是字典的键必须使用不可变的对象,并且一个字典中可以使用不同类型的键值。
- keys()或者values()返回键列表或值列表。
- items()返回包含键值对的元值。
- 示例:
>>> dict={'name': 'jack', 'age' : 30, 'gender':'male' }
>>> dict['name']
'jack'
>>> dict['age']
30
>>> dict['gender']
'male'
>>> dict.keys()
['gender', 'age', 'name']
>>> dict.values()
['male', 30, 'jack']
>>> dict.items()
[('gender', 'male'), ('age', 30), ('name', 'jack')]
创建字典
dict = {}
- 使用工厂方法dict()
fdict=dict(['x',1], ['y',2])
- 内建方法:fromkeys(),字典中的元素具有相同的值,默认为None
ddict={}.fromkeys(('x','y'), -1)
#输出结果:{'x': -1, 'y': -1}
访问字典中的值
- 直接使用key访问:key不存在会报错,可以使用has_key()或者in和not in判断,但是has_key方法即将废弃。
- 循环遍历:
for key in dict1.keys():
- 使用迭代器:
for key in dict1:
更新和删除
- 直接用键值访问更新;内建的
update()
方法可以将整个字典的内容拷贝到另一个字典中。 del dict1['a']
:删除字典中键值为a的元素dict1.pop('a')
:删除并且返回键为'a'的元素dict1.clear()
:删除字典所有元素del dict1
:删除整个字典
字典相关的内建函数
type(), str(), cmp()
(cmp很少用于字典的比较,比较依次是字典的大小、键、值)
工厂函数dict()
* 例如:
dict(zip(('x','y'),(1,2)))
dict(x=1,y=2)
#输出结果:{'x': 1, 'y': 2}
- 使用字典生成字典比用copy慢,因此这种情况下推荐使用
copy()
常用函数
len()
:返回序列的大小hash()
: 用于判断某个对象是否可以做一个字典的键,非哈希类型报TypeError错误dict.clear()
: 删除字典中的所有元素dict.fromkeys(seq, val=None)
: 以seq中的元素为键创建并返回一个字典,val为制定默认值dict.get(key, default=None)
: 返回key的value,如果该键不存在返回default指定的值dict.has_key(key)
:判断字典中是否存在key,建议使用in或not in代替dict.items()
:返回健值对元组的列表dict.keys()
:返回字典中键的列表dict.iter*()
: iteritems(), iterkeys(), itervalues()返回迭代子而不是列表dict.pop(key[,default])
:同get(),区别是若key存在,删除并返回dict[key],若不存在则返回default,未指定值,抛出KeyError异常dict.setdefault(key, default=None)
:同set(),若key存在则返回其value,若key不存在,则dict[key]=defaultdict.update(dict2)
:将dict2中的键值对添加到字典dict中,如果有重复则覆盖,原字典不存在的条目则添加进来。dict.values()
:返回字典中所有值的列表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2012-01-01 工欲善其事,必先利其器.--转载
2012-01-01 每个项目最重要的十件事 --转载
2012-01-01 11 款用于优化、分析源代码的Java工具 --转载