Python中的 字典和字典数据类型
字典
1.字典是Python的内建数据类型,我们知道序列是以连续的整数为索引,而字典用关键字作为索引。特别的,关键字必须是不可变类型,常为字符串或者数值。
#如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接地包含了可变对象,就不能当做关键字。 #不能用链表做关键字,因为链表可以用索引、切割或者 append() 和 extend() 等方法改变。
(key:value)
同一个dict中键值必须唯一
用{}来创建空字典
dict.keys()返回字典中所有关键字组成的无序列表
dict.values()
dict.items() items()方法得出来的项都是元组。
>>> englishLetterFreq = {'E': 12.70, 'T': 9.06, 'A': 8.17, 'O': 7.51, 'I': 6.97, 'N': 6.75, 'S': 6.33, 'H': 6.09, 'R': 5.99, 'D': 4.25, 'L': 4.03, 'C': 2.78, 'U': 2.76, 'M': 2.41, 'W': 2.36, 'F': 2.23, 'G': 2.02, 'Y': 1.97, 'P': 1.93, 'B': 1.29, 'V': 0.98, 'K': 0.77, 'J': 0.15, 'X': 0.15, 'Q': 0.10, 'Z': 0.07} >>> print(englishLetterFreq.keys()) dict_keys(['E', 'T', 'A', 'O', 'I', 'N', 'S', 'H', 'R', 'D', 'L', 'C', 'U', 'M', 'W', 'F', 'G', 'Y', 'P', 'B', 'V', 'K', 'J', 'X', 'Q', 'Z']) >>> print(englishLetterFreq.values()) dict_values([12.7, 9.06, 8.17, 7.51, 6.97, 6.75, 6.33, 6.09, 5.99, 4.25, 4.03, 2.78, 2.76, 2.41, 2.36, 2.23, 2.02, 1.97, 1.93, 1.29, 0.98, 0.77, 0.15, 0.15, 0.1, 0.07]) >>> print(englishLetterFreq.items()) dict_items([('E', 12.7), ('T', 9.06), ('A', 8.17), ('O', 7.51), ('I', 6.97), ('N', 6.75), ('S', 6.33), ('H', 6.09), ('R', 5.99), ('D', 4.25), ('L', 4.03), ('C', 2.78), ('U', 2.76), ('M', 2.41), ('W', 2.36), ('F', 2.23), ('G', 2.02), ('Y', 1.97), ('P', 1.93), ('B', 1.29), ('V', 0.98), ('K', 0.77), ('J', 0.15), ('X', 0.15), ('Q', 0.1), ('Z', 0.07)]) >>> list(englishLetterFreq.items()) [('E', 12.7), ('T', 9.06), ('A', 8.17), ('O', 7.51), ('I', 6.97), ('N', 6.75), ('S', 6.33), ('H', 6.09), ('R', 5.99), ('D', 4.25), ('L', 4.03), ('C', 2.78), ('U', 2.76), ('M', 2.41), ('W', 2.36), ('F', 2.23), ('G', 2.02), ('Y', 1.97), ('P', 1.93), ('B', 1.29), ('V', 0.98), ('K', 0.77), ('J', 0.15), ('X', 0.15), ('Q', 0.1), ('Z', 0.07)] >>>
使用 in 关键字(指 Python 语法)可以检查字典中是否存在某个关键字
dict() 构造函数可以直接从 key-value 对中创建字典:
>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]) {'sape': 4139, 'jack': 4098, 'guido': 4127}
字典推导式可以从任意的键值表达式中创建字典:
>>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36}
如果关键字都是简单的字符串,有时通过关键字参数指定 key-value 对更为方便:
>>> dict(sape=4139, guido=4127, jack=4098) {'sape': 4139, 'jack': 4098, 'guido': 4127}
和列表一样,变量保存的并不是字典值本身,而是字典的引用,
列表可以包含其他列表,同样,字典也可以包含其他字典
字典中使用len()函数:
返回字典中的(key:value)对的数量
字典中使用in运算:
in运算符检查一个键key是否在字典里,而不是一个value
字典中使用for运算符:
迭代字典里的键key !!!!!!
总结一下字典和列表的区别:
1、字典的项没有固定的顺序,而列表中有顺序,即下标
2、字典不能使用+运算符来进行连接。
如果是添加新的项,那么就添加新的(key:value)对即可:
foo['a new key'] = 'a string'
3、列表下标是整数索引,从 0 到 len(list)-1; 而字典可以有任何键。
4、在字典上查找比在列表上查找更快。
in 运算符在字典上使用比在列表中使用快,参考http://invpy.com/listvsdict
split()方法
'a long string with space or not'.split() 返回字符串列表,在空格的地方做分割。
也可以给split('xxx')方法传递一个可选的参数,告诉他在出现这个参数'xxx'的时候做分割
一些强制类型转换
float() 转化成浮点数
int() 转化成整数,去掉小数
str() 转化成string
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~