Python 字典(Dictionary)操作详解


Posted in Python onMarch 11, 2014

Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。

一、创建字典

字典由键和对应值成对组成。字典也被称作关联数组或哈希表。基本语法如下:

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

也可如此创建字典

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

注意:

每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数或元组。

二、访问字典里的值

把相应的键放入熟悉的方括弧,如下实例:

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

print "dict['Name']: ", dict['Name'];
print "dict['Age']: ", dict['Age'];
#以上实例输出结果:
#dict['Name']: Zara
#dict['Age']: 7

如果用字典里没有的键访问数据,会输出错误如下:

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

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

以上实例输出结果:

#KeyError: 'Alice'

三、修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

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命令,如下实例:

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

del dict['Name']; # 删除键是'Name'的条目
dict.clear();  # 清空词典所有条目
del dict ;  # 删除词典

print "dict['Age']: ", dict['Age'];
print "dict['School']: ", dict['School'];
#但这会引发一个异常,因为用del后字典不再存在:
dict['Age']:

五、字典键的特性

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

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

print "dict['Name']: ", dict['Name'];
#以上实例输出结果:
#dict['Name']: Manni

2)键必须不可变,所以可以用数,字符串或元组充当,所以用列表就不行,如下实例:

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

print "dict['Name']: ", dict['Name'];
#以上实例输出结果:
#TypeError: list objects are unhashable

六、字典内置函数&方法

Python字典包含了以下内置函数:

cmp(dict1, dict2) #比较两个字典元素。
len(dict) #计算字典元素个数,即键的总数。
str(dict) #输出字典可打印的字符串表示。
type(variable) #返回输入的变量类型,如果变量是字典就返回字典类型。

Python字典包含了以下内置方法:

radiansdict.clear() #删除字典内所有元素
radiansdict.copy() #返回一个字典的浅复制
radiansdict.fromkeys() #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
radiansdict.get(key, default=None) #返回指定键的值,如果值不在字典中返回default值
radiansdict.has_key(key) #如果键在字典dict里返回true,否则返回false
radiansdict.items() #以列表返回可遍历的(键, 值) 元组数组
radiansdict.keys() #以列表返回一个字典所有的键
radiansdict.setdefault(key, default=None) #和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
radiansdict.update(dict2) #把字典dict2的键/值对更新到dict里
radiansdict.values() #以列表返回字典中的所有值

七、字典练习代码

print('''|---欢迎进入通讯录程序---|
|---1、 查询联系人资料---|
|---2、 插入新的联系人---|
|---3、 删除已有联系人---|
|---4、 退出通讯录程序---|''')
addressBook={}#定义通讯录
while 1:
 temp=input('请输入指令代码:')
 if not temp.isdigit():
  print("输入的指令错误,请按照提示输入")
  continue
 item=int(temp)#转换为数字
 if item==4:
  print("|---感谢使用通讯录程序---|")
  break
 name = input("请输入联系人姓名:")
 if item==1:
  if name in addressBook:
   print(name,':',addressBook[name])
   continue
  else:
   print("该联系人不存在!")
 if item==2:
  if name in addressBook:
   print("您输入的姓名在通讯录中已存在-->>",name,":",addressBook[name])
   isEdit=input("是否修改联系人资料(Y/N):")
   if isEdit=='Y':
    userphone = input("请输入联系人电话:")
    addressBook[name]=userphone
    print("联系人修改成功")
    continue
   else:
    continue
  else:
   userphone=input("请输入联系人电话:")
   addressBook[name]=userphone
   print("联系人加入成功!")
   continue

 if item==3:
  if name in addressBook:
   del addressBook[name]
   print("删除成功!")
   continue
  else:
   print("联系人不存在")

这篇文章就介绍到这了,希望大家以后多多支持三水点靠木。

Python 相关文章推荐
Python下的Mysql模块MySQLdb安装详解
Apr 09 Python
Python中使用pprint函数进行格式化输出的教程
Apr 07 Python
浅谈Python对内存的使用(深浅拷贝)
Jan 17 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
Python中反射和描述器总结
Sep 23 Python
Selenium的使用详解
Oct 19 Python
详解python Todo清单实战
Nov 01 Python
Apache部署Django项目图文详解
Jul 30 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
python禁用键鼠与提权代码实例
Aug 16 Python
Python3中FuzzyWuzzy库实例用法
Nov 18 Python
Python并发爬虫常用实现方法解析
Nov 19 Python
Python 元组(Tuple)操作详解
Mar 11 #Python
Python 列表(List)操作方法详解
Mar 11 #Python
Python基本数据类型详细介绍
Mar 11 #Python
常用python数据类型转换函数总结
Mar 11 #Python
python读取csv文件示例(python操作csv)
Mar 11 #Python
Python help()函数用法详解
Mar 11 #Python
python操作日期和时间的方法
Mar 11 #Python
You might like
php高级编程-函数-郑阿奇
2011/07/04 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
JavaScript实现的微信二维码图片生成器的示例
2016/10/26 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
jQuery属性选择器用法实例分析
2019/06/28 jQuery
jQuery zTree树插件的使用教程
2019/08/16 jQuery
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
200 行python 代码实现 2048 游戏
2018/01/12 Python
Python浮点数四舍五入问题的分析与解决方法
2019/11/19 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
雅诗兰黛旗下专业男士保养领导品牌:Lab Series
2017/05/15 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
PHP如何与mysql建立链接
2013/05/05 面试题
.NET概念性的面试题
2012/02/29 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
总经理驾驶员岗位职责
2013/12/04 职场文书
客户经理岗位职责
2013/12/08 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
办公室岗位职责
2014/02/12 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
库房保管员岗位职责
2014/04/07 职场文书
学校先进集体事迹材料
2014/05/31 职场文书
党员民主生活会材料
2014/12/15 职场文书
北京颐和园导游词
2015/01/30 职场文书
暗恋桃花源观后感
2015/06/12 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书