目录

简介

计算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(字典)(回)相关推荐

  1. Python的dict字典结构操作方法学习笔记

    Python的dict字典结构操作方法学习笔记 这篇文章主要介绍了Python的dict字典结构操作方法学习笔记本,字典的操作是Python入门学习中的基础知识,需要的朋友可以参考下 一.字典的基本方 ...

  2. Python之dict字典

    dict字典 dict字典认知 字典 访问字典里面的成员 如何快速创建一个字典 访问字典成员 dict字典的修改 添加 注意:字典无序 修改字典 删除字典中的数据 未完待续..... dict字典认知 ...

  3. Python保存dict字典类型数据到Mysql,并自动创建表与列

    主要是工具类,使用pymysql来创建表与SQL 示例代码 import pymysqlclass UseMysql(object):def __init__(self, user, passwd, ...

  4. python(dict字典相关知识以及小例子:生成一个列表,存放100个随机整数,找出出现次数最多的数字)

    一.什么是字典? #字典的使用 #子字典是一个容器类,可以用来存储数据 #列表存储数据特点:1.有序的 2.每一个都有一个索引,通过索引可以对数据进行查询,修改,删除#字典存储数据: key:valu ...

  5. python中dict转换成list_python里dict变成list实例方法

    python里dict(字典)怎么变成list(列表)? 说明:列表不可以转换为字典 1.转换后的列表为无序列表 a = {'a' : 1, 'b': 2, 'c' : 3} #字典中的key转换为列 ...

  6. python容器类型——字典{dict}

    python容器类型--字典{dict} 文章目录 python容器类型--字典{dict} 一.特点 二.定义 三.字典的基本操作 1.查看 2.增加.修改 3.删除 4.合并字典 5.成员关系 6 ...

  7. python xml字符串和dict字典互转

    python xml字符串和dict字典互转 字典 转 xml def trans_dict_to_xml(data_dict):"""字典转xml:param data ...

  8. 【Python】将字典(dict)转化为Dataframe

    [Python]将字典(dict)转化为Dataframe_张欣的博客-CSDN博客_python字典转dataframe dictory = {'a':1,'b':2} df = pd.DataFr ...

  9. python脚本例子_python dict 字典 以及 赋值 引用的一些实例(详解)

    最近在做一个很大的数据库方面的东东,要用到根据数值来查找,于是想到了python中的字典,平时没用过dict这个东东 用的最多的还是 list 和 tuple (网上查 用法一大堆) 看了一下创建字典 ...

最新文章

  1. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
  2. 为什么很难训练深度神经网络?
  3. QString string char*互转
  4. iOS发展- 文件共享(使用iTunes导入文件, 并显示现有文件)
  5. java union方法参数_Java Geometry.union方法代碼示例
  6. nginx proxy_pass末尾神奇的/
  7. P3746 [六省联考 2017] 组合数问题(倍增、dp)
  8. 主成分分析(PCA)方法
  9. c向python注册函数_python如何调用C, 如何注册成C的回调函数(python后台程序常用方法)...
  10. python virtualenv
  11. [转]计算机语言的种类总结
  12. 清理rms客户端信息
  13. 「经济/商学/理财」简说
  14. 游戏编程入门(2):创建游戏引擎和使用该引擎制作小游戏
  15. 如何使用PS修改图片背景
  16. 高考数学九大知识模块的易错考点【修正版】【知识体系辅导】
  17. 图解PKCS#1(合)
  18. 即使有一天没有属于我的天,我也要一步一步往上爬
  19. 如何保护个人的隐私安全
  20. linux常用命令合集

热门文章

  1. C#开源项目一览表[转](包含国内和国外)
  2. ajax的总结和使用
  3. SqlServer两表之间:根据一个表的字段更新另一个表的字段
  4. background:url(./images.png) no-repeat 0 center的用法
  5. css背景图充满整个屏幕
  6. 《DSP using MATLAB》Problem 6.6
  7. 生成器(generator)
  8. 批处理文件中获取当前所在路径的几种方法,以及写文件到txt
  9. MethodInterceptor拦截器
  10. Dynamics CRM2016 Update or Create parentcustomerid in Contact using web api