Python之 dict(字典)(回)
目录
简介
计算dict的长度
访问字典里的值
(1)常规访问
(2)避免 KeyError 发生
修改字典
删除字典元素
Python之 遍历dict
Python中dict的特点
简介
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此创建字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
计算dict的长度
由于dict也是集合,len() 函数可以计算任意集合的大小:
>>> len(d)
3
注意: 一个 key-value 算一个,因此,dict大小为3。
访问字典里的值
(1)常规访问
把相应的键放入到方括号中,如下实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
以上实例输出结果:
dict['Name']: Runoob
dict['Age']: 7
如果用字典里没有的键访问数据,会输出错误如下:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}print ("dict['Alice']: ", dict['Alice'])
以上实例输出结果:
Traceback (most recent call last):File "test.py", line 5, in <module>print ("dict['Alice']: ", dict['Alice'])
KeyError: 'Alice'
这和 list 很像,不同之处是,list 必须使用索引返回对应的元素,而dict使用key:
注意: 通过 key 访问 dict 的value,只要 key 存在,dict就返回对应的value。如果key不存在,会直接报错:KeyError。
(2)避免 KeyError 发生
有两个办法:
一是先判断一下 key 是否存在,用 in 操作符:
if 'Paul' in d:print d['Paul']
如果 'Paul' 不存在,if语句判断为False,自然不会执行 print d['Paul'] ,从而避免了错误。
二是使用dict本身提供的一个 get 方法,在Key不存在的时候,返回None:
>>> print d.get('Bart')
59
>>> print d.get('Paul')
None
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}dict['Age'] = 8 # 更新 Age
dict['School'] = "菜鸟教程" # 添加信息print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
以上实例输出结果:
dict['Age']: 8
dict['School']: 菜鸟教程
删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}del dict['Name'] # 删除键 'Name'
dict.clear() # 清空字典
del dict # 删除字典print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
但这会引发一个异常,因为用执行 del 操作后字典不再存在:
Traceback (most recent call last):File "test.py", line 9, in <module>print ("dict['Age']: ", dict['Age'])
TypeError: 'type' object is not subscriptable
Python之 遍历dict
由于dict也是一个集合,所以,遍历dict和遍历list类似,都可以通过 for 循环实现。
直接使用for循环可以遍历 dict 的 key:
>>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
>>> for key in d:
... print key
...
Lisa
Adam
Bart
由于通过 key 可以获取对应的 value,因此,在循环体内,可以获取到value的值。
Python中dict的特点
1.dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
由于dict是按 key 查找,所以,在一个dict中,key不能重复。
2.dict的第二个特点就是存储的key-value序对是没有顺序的!这和list不一样:
d = {'Adam': 95,'Lisa': 85,'Bart': 59
}
当我们试图打印这个dict时:
>>> print d
{'Lisa': 85, 'Adam': 95, 'Bart': 59}
打印的顺序不一定是我们创建时的顺序,而且,不同的机器打印的顺序都可能不同,这说明dict内部是无序的,不能用dict存储有序的集合。
3.dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
可以试试用list作为key时会报什么样的错误。
不可变这个限制仅作用于key,value是否可变无所谓:
{'123': [1, 2, 3], # key 是 str,value是list123: '123', # key 是 int,value 是 str('a', 'b'): True # key 是 tuple,并且tuple的每个元素都是不可变对象,value是 boolean
}
最常用的key还是字符串,因为用起来最方便。
本文部分摘自慕课《初识Python》课程、菜鸟教程《Python 3 教程 》
Python之 dict(字典)(回)相关推荐
- Python的dict字典结构操作方法学习笔记
Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...
- Python之dict字典
dict字典 dict字典认知 字典 访问字典里面的成员 如何快速创建一个字典 访问字典成员 dict字典的修改 添加 注意:字典无序 修改字典 删除字典中的数据 未完待续..... dict字典认知 ...
- Python保存dict字典类型数据到Mysql,并自动创建表与列
主要是工具类,使用pymysql来创建表与SQL 示例代码 import pymysqlclass UseMysql(object):def __init__(self, user, passwd, ...
- python(dict字典相关知识以及小例子:生成一个列表,存放100个随机整数,找出出现次数最多的数字)
一.什么是字典? #字典的使用 #子字典是一个容器类,可以用来存储数据 #列表存储数据特点:1.有序的 2.每一个都有一个索引,通过索引可以对数据进行查询,修改,删除#字典存储数据: key:valu ...
- python中dict转换成list_python里dict变成list实例方法
python里dict(字典)怎么变成list(列表)? 说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列 ...
- python容器类型——字典{dict}
python容器类型--字典{dict} 文章目录 python容器类型--字典{dict} 一.特点 二.定义 三.字典的基本操作 1.查看 2.增加.修改 3.删除 4.合并字典 5.成员关系 6 ...
- python xml字符串和dict字典互转
python xml字符串和dict字典互转 字典 转 xml def trans_dict_to_xml(data_dict):"""字典转xml:param data ...
- 【Python】将字典(dict)转化为Dataframe
[Python]将字典(dict)转化为Dataframe_张欣的博客-CSDN博客_python字典转dataframe dictory = {'a':1,'b':2} df = pd.DataFr ...
- python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)
最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东 用的最多的还是 list 和 tuple (网上查 用法一大堆) 看了一下创建字典 ...
最新文章
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
- 为什么很难训练深度神经网络?
- QString string char*互转
- iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
- java union方法参数_Java Geometry.union方法代碼示例
- nginx proxy_pass末尾神奇的/
- P3746 [六省联考 2017] 组合数问题(倍增、dp)
- 主成分分析(PCA)方法
- c向python注册函数_python如何调用C, 如何注册成C的回调函数(python后台程序常用方法)...
- python virtualenv
- [转]计算机语言的种类总结
- 清理rms客户端信息
- 「经济/商学/理财」简说
- 游戏编程入门(2):创建游戏引擎和使用该引擎制作小游戏
- 如何使用PS修改图片背景
- 高考数学九大知识模块的易错考点【修正版】【知识体系辅导】
- 图解PKCS#1(合)
- 即使有一天没有属于我的天,我也要一步一步往上爬
- 如何保护个人的隐私安全
- linux常用命令合集
热门文章
- C#开源项目一览表[转](包含国内和国外)
- ajax的总结和使用
- SqlServer两表之间:根据一个表的字段更新另一个表的字段
- background:url(./images.png) no-repeat 0 center的用法
- css背景图充满整个屏幕
- 《DSP using MATLAB》Problem 6.6
- 生成器(generator)
- 批处理文件中获取当前所在路径的几种方法,以及写文件到txt
- MethodInterceptor拦截器
- Dynamics CRM2016 Update or Create parentcustomerid in Contact using web api