Python 字典(Dictionary)操作详解

 更新时间:2014年03月11日 17:05:03   投稿:junjie  
这篇文章主要介绍了Python 字典(Dictionary)的详细操作方法,需要的朋友可以参考下

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创建xml的方法

    Python创建xml的方法

    这篇文章主要介绍了Python创建xml的方法,实例分析了Python操作XML文件的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • python使用xlrd与xlwt对excel的读写和格式设定

    python使用xlrd与xlwt对excel的读写和格式设定

    最近在用python处理excel表的时候出现了一些问题,所以想着记录下最后的实现方式和问题解决方法。方便自己或者大家在有需要的时候参考借鉴,下面这篇文章主要就介绍了python使用xlrd与xlwt对excel的读写和格式设定的相关资料,一起来学习学习吧。
    2017-01-01
  • 聊聊通过celery_one避免Celery定时任务重复执行的问题

    聊聊通过celery_one避免Celery定时任务重复执行的问题

    Celery Once 也是利用 Redis 加锁来实现, Celery Once 在 Task 类基础上实现了 QueueOnce 类,该类提供了任务去重的功能,今天通过本文给大家介绍通过celery_one避免Celery定时任务重复执行的问题,感兴趣的朋友一起看看吧
    2021-10-10
  • 对pandas写入读取h5文件的方法详解

    对pandas写入读取h5文件的方法详解

    今天小编就为大家分享一篇对pandas写入读取h5文件的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 梅尔倒谱系数(MFCC)实现

    梅尔倒谱系数(MFCC)实现

    这篇文章主要为大家详细介绍了梅尔倒谱系数(MFCC)实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • python中使用urllib2伪造HTTP报头的2个方法

    python中使用urllib2伪造HTTP报头的2个方法

    这篇文章主要介绍了python中使用urllib2伪造HTTP报头的2个方法,即伪造http头信息,需要的朋友可以参考下
    2014-07-07
  • 利用Python如何制作贪吃蛇及AI版贪吃蛇详解

    利用Python如何制作贪吃蛇及AI版贪吃蛇详解

    这篇文章主要给大家介绍了关于利用Python如何制作贪吃蛇及AI版贪吃蛇的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python操作RabbitMQ服务器实现消息队列的路由功能

    Python操作RabbitMQ服务器实现消息队列的路由功能

    RabbitMQ是一个消息队列服务器,这里我们针对Python+Pika+RabbitMQ的服务器端环境,来看一下如何使用Python操作RabbitMQ服务器实现消息队列的路由功能
    2016-06-06
  • django 发送邮件和缓存的实现代码

    django 发送邮件和缓存的实现代码

    这篇文章主要介绍了django 发送邮件和缓存的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python csv模块使用方法代码实例

    Python csv模块使用方法代码实例

    这篇文章主要介绍了Python csv模块使用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论