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实现Const详解
Jan 27 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
Sep 06 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
Jan 18 Python
python实现人机猜拳小游戏
Feb 03 Python
关于Tensorflow使用CPU报错的解决方式
Feb 05 Python
django跳转页面传参的实现
Sep 17 Python
Python 实现进度条的六种方式
Jan 06 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 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
smarty模板引擎从php中获取数据的方法
2015/01/22 PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
2017/02/15 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
简单方法判断JavaScript对象为null或者属性为空
2014/09/26 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
vue+element-ui+ajax实现一个表格的实例
2018/03/09 Javascript
详解vue中组件参数
2018/07/09 Javascript
浅析微信小程序自定义日历组件及flex布局最后一行对齐问题
2020/10/29 Javascript
Vue 3自定义指令开发的相关总结
2021/01/29 Vue.js
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python中使用装饰器和元编程实现结构体类实例
2015/01/28 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
如何用Python破解wifi密码过程详解
2019/07/12 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
python jenkins 打包构建代码的示例代码
2019/11/29 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
Python使用itcaht库实现微信自动收发消息功能
2020/07/13 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
巴西电子产品购物网站:Saldão da Informática
2018/01/09 全球购物
奥地利手表、香水、化妆品和珠宝购物网站:Brasty.at
2021/01/17 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
机械专业应届毕业生自荐书
2014/06/12 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
通知范文怎么写
2015/04/16 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
深入理解go slice结构
2021/09/15 Golang
Go获取两个时区的时间差
2022/04/20 Golang