Python中字典的基本知识初步介绍


Posted in Python onMay 21, 2015

 字典是可变的,并且可以存储任意数量的Python对象,包括其他容器类型另一个容器类型。字典包括键对(称为项目)及其相应的值。

Python字典也被称为关联数组或哈希表。字典的一般语法如下:

dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

可以用下面的方式创建字典:

dict1 = { 'abc': 456 };
dict2 = { 'abc': 123, 98.6: 37 };

每个按键都来自它的值用冒号(:),该项目以逗号分隔,整个事情是包含在大括号分隔。没有任何项目一个空的字典是写只有两个大括号,就像这样:{}

键在一个字典中是唯一的,而值可能不是。字典的值可以是任何类型的,但键必须是不可变的数据类型,例如字符串,数字,或元组。
访问字典的值:

要访问字典元素,您可以使用熟悉的方括号一起的关键,获得它的值。下面是一个简单的例子:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];

当执行上面的代码中,产生以下结果:

dict['Name']: Zara
dict['Age']: 7

如果要访问一个不存在的键,这会得到一个错误,如下所示:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

print "dict['Alice']: ", dict['Alice'];

当执行上面的代码,产生以下结果:

dict['Zara']:
Traceback (most recent call last):
 File "test.py", line 4, in <module>
  print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

更新字典:

可以通过添加一个新条目或项目(即一个键 - 值对),修改现有条目或删除。作为简单的例子,如下图所示在现有条目更新字词:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry


print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

当执行上面的代码,产生以下结果:

dict['Age']: 8
dict['School']: DPS School

删除字典元素:

可以删除单个字典元素或清除字典中的全部内容。也可以删除整个字典在一个单一的操作。

要删除整个字典,只要用del语句。下面是一个简单的例子:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'};

del dict['Name']; # remove entry with key 'Name'
dict.clear();   # remove all entries in dict
del dict ;    # delete entire dictionary

print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];

这将产生以下结果。注意引发异常,这是因为经过del dict删除,字典已经不存在了:

dict['Age']:
Traceback (most recent call last):
 File "test.py", line 8, in <module>
  print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

注:del()方法会在后续的章节中讨论。
字典的键的属性:

字典值没有限制。它们可以是任意Python对象,无论是标准的对象或用户定义的对象。但是作为键,是不可以这样的。

要记住字典中的键的两个要点:

(一)不准一个键对应多个条目。这意味着不能有重复的键。当有重复的键,在分配过程中以最后分配的为准。下面是一个简单的例子:

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'};

print "dict['Name']: ", dict['Name'];

当执行上面的代码,产生以下结果:

dict['Name']: Manni

(二)键的值字必须是不可变的。这意味着可以使用字符串,数字或元组作为字典的键,但像['key']是不允许的。下面是一个简单的例子:

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7};

print "dict['Name']: ", dict['Name'];

当执行上面的代码,产生以下结果:

Traceback (most recent call last):
 File "test.py", line 3, in <module>
  dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable
Python 相关文章推荐
Python编写百度贴吧的简单爬虫
Apr 02 Python
深入浅析python继承问题
May 29 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python使用add_subplot与subplot画子图操作示例
Jun 01 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
Jun 17 Python
Python数据库小程序源代码
Sep 15 Python
Pytoch之torchvision.transforms图像变换实例
Dec 30 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
python中@contextmanager实例用法
Feb 07 Python
python内置进制转换函数的操作
Jun 02 Python
Python检测字符串中是否包含某字符集合中的字符
May 21 #Python
Linux下用Python脚本监控目录变化代码分享
May 21 #Python
Python批量按比例缩小图片脚本分享
May 21 #Python
初步讲解Python中的元组概念
May 21 #Python
Linux下使用python自动修改本机网关代码分享
May 21 #Python
Python字符串逐字符或逐词反转方法
May 21 #Python
Python合并字符串的3种方法
May 21 #Python
You might like
3
2006/10/09 PHP
php+mysql写的简单留言本实例代码
2008/07/25 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
PHP错误机制知识汇总
2016/03/24 PHP
PHP获取链表中倒数第K个节点的方法
2018/01/18 PHP
php5与php7的区别点总结
2019/10/11 PHP
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
jQuery异步加载数据并添加事件示例
2014/08/24 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
JS 拼凑字符串的简单实例
2016/09/02 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
Vue.js实战之通过监听滚动事件实现动态锚点
2017/04/04 Javascript
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
Python发送邮件的实例代码讲解
2019/10/16 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
哈弗商学院毕业生求职信
2014/02/26 职场文书
教师个人成长总结
2015/02/11 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
为什么RedisCluster设计成16384个槽
2021/09/25 Redis