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内置的模块与函数进行不同进制的数的转换
Mar 12 Python
python 处理string到hex脚本的方法
Oct 26 Python
只需7行Python代码玩转微信自动聊天
Jan 27 Python
Python Flask框架扩展操作示例
May 03 Python
Python读取xlsx文件的实现方法
Jul 04 Python
django中使用POST方法获取POST数据
Aug 20 Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 Python
python numpy 反转 reverse示例
Dec 04 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
浅谈python 类方法/静态方法
Sep 18 Python
python爬虫框架feapde的使用简介
Apr 20 Python
Python+SeaTable实现计算两个日期间的工作日天数
Jul 07 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
Laravel框架中扩展函数、扩展自定义类的方法
2014/09/04 PHP
php提高网站效率的技巧
2015/09/29 PHP
浅析php如何实现App常用的秒发功能
2016/08/03 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
ES6中Set和Map数据结构,Map与其它数据结构互相转换操作实例详解
2019/02/28 Javascript
vue计算属性无法监听到数组内部变化的解决方案
2019/11/06 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
[59:15]EG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/29 DOTA
Python中垃圾回收和del语句详解
2018/11/15 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
关于Pytorch的MNIST数据集的预处理详解
2020/01/10 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
python request 模块详细介绍
2020/11/10 Python
python中字符串的编码与解码详析
2020/12/03 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
一套英文Java笔试题面试题
2016/04/21 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
大学生应聘自荐信
2013/10/11 职场文书
银行实习生的自我评价
2014/01/13 职场文书
工程安全员岗位职责
2014/03/09 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2014年政教处工作总结
2014/12/20 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
Python的这些库,你知道多少?
2021/06/09 Python