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中运行并行任务技巧
Feb 26 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
Jun 21 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python实现剪切功能
Jan 23 Python
python中的print()输出
Apr 12 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
在cmd中查看python的安装路径方法
Jul 03 Python
python聚类算法解决方案(rest接口/mpp数据库/json数据/下载图片及数据)
Aug 28 Python
Python使用进程Process模块管理资源
Mar 05 Python
python collections模块的使用
Oct 16 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 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
example2.php
2006/10/09 PHP
使用 MySQL Date/Time 类型
2008/03/26 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
php 静态变量与自定义常量的使用方法
2010/01/26 PHP
利用PHP实现短域名互转
2013/07/05 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
php模拟用户自动在qq空间发表文章的方法
2015/01/07 PHP
php实现cookie加密的方法
2015/03/10 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
vue组件父与子通信详解(一)
2017/11/07 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
2018/08/28 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
vue实现购物车的监听
2020/04/20 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
Python安装selenium包详细过程
2019/07/23 Python
python编写猜数字小游戏
2019/10/06 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
简短的公司员工自我评价分享
2013/11/13 职场文书
社区党务公开实施方案
2014/03/18 职场文书
消防安全责任书
2014/04/14 职场文书
高中军训的心得体会
2014/09/01 职场文书
读群众路线的心得体会
2014/09/03 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
行政答辩状范文
2015/05/21 职场文书
后天观后感
2015/06/08 职场文书
中秋联欢会主持词
2015/07/04 职场文书
golang 在windows中设置环境变量的操作
2021/04/29 Golang
详解OpenCV曝光融合
2022/04/29 Python