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 strip()函数 介绍
May 24 Python
Python实现设置windows桌面壁纸代码分享
Mar 28 Python
解决python3 json数据包含中文的读写问题
May 10 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
python读写csv文件的方法
Aug 13 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
使用Python测试Ping主机IP和某端口是否开放的实例
Dec 17 Python
python使用信号量动态更新配置文件的操作
Apr 01 Python
Python实现验证码识别
Jun 15 Python
Pygame Rect区域位置的使用(图文)
Nov 17 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
咖啡的化学
2021/03/03 咖啡文化
php 各种应用乱码问题的解决方法
2010/05/09 PHP
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
常用简易JavaScript函数
2009/04/09 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
Html5的placeholder属性(IE兼容)实现代码
2014/08/30 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
JS监听事件的叠加和移除功能
2018/11/19 Javascript
如何优雅地在Node应用中进行错误异常处理
2019/11/25 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
python使用PyV8执行javascript代码示例分享
2013/12/04 Python
Python计算三角函数之asin()方法的使用
2015/05/15 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
一篇文章彻底搞懂Python中可迭代(Iterable)、迭代器(Iterator)与生成器(Generator)的概念
2019/05/13 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
Python 导入文件过程图解
2019/10/15 Python
python操作cfg配置文件方式
2019/12/22 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
Python3.9新特性详解
2020/10/10 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
Baracuta官方网站:Harrington夹克,G9,G4,G10等
2018/03/06 全球购物
学校课外活动总结
2014/05/08 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
项目中Nginx多级代理是如何获取客户端的真实IP地址
2022/05/30 Servers