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编程-将Python程序转化为可执行程序[整理]
Apr 09 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
python实现ipsec开权限实例
Nov 11 Python
Python爬虫设置代理IP的方法(爬虫技巧)
Mar 04 Python
PyQt5每天必学之切换按钮
Aug 20 Python
python将视频转换为全字符视频
Apr 26 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
Python获取二维数组的行列数的2种方法
Feb 11 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 Python
LyScript实现绕过反调试保护的示例详解
Aug 14 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
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php数组合并的二种方法
2014/03/21 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP正则替换函数preg_replace()报错:Notice Use of undefined constant的解决方法分析
2017/02/04 PHP
jquery+ajax每秒向后台发送请求数据然后返回页面的代码
2011/01/17 Javascript
JavaScript String.replace函数参数实例说明
2013/06/06 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
2016/01/14 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
美国在线面料商店:Fashion Fabrics Club
2020/01/31 全球购物
init进程的作用
2015/08/20 面试题
大学生毕业求职简历的自我评价
2013/10/24 职场文书
高一生物教学反思
2014/01/17 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
小学数学教研活动总结
2014/07/01 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫