Python中的字典

  • Python的字典把这个字称为“键”(key),把其对应的含义称为“值(value)”
  • Python的字典在有些地方称为哈希(hash)
  • 字典是Python中唯一的映射类型,映射是数学上的一个术语,指两个元素之间元素相互对应的关系
  • 映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式来获取相应位置的值,一般索引值与对应位置存储的数据是毫无关系的
    利用列表索引打印,间接找对应关系

    利用字典直接找对应关系

字典特征

1.标志性符号是大括号,{}

2.字典由“键”和“值”共同组成,每一对键值组合称为“项”

3.字典的键必须独一无二,但值则不必,值可以取任何数据类型,但必须是不可变的,如字符串、数或数组

dict()函数

  • dict()函数的参数可以是一个序列(但不能是多个)


    括号这么多是用元组的形式伪装成一个参数,用列表的形式也可以伪装

创建字典的方法总结

1.关键字等于,键不加引号

a = dict(one = 1, two = 2, three = 3)

2.逗号隔开,键加引号

 b = {'one':1,'two':2,'three':3}

3.利用zip()方法找两个迭代对象索引相同的对应关系

d = dict(zip(['one','two','three'],[1,2,3]))

4.dict()函数参数为字典

e = dict({'one':1,'two':2,'three':3})

5.dict()函数参数为序列

f = dict([('two',2),('one',1),('three',3)])

Task

0. 当你听到小伙伴们在谈论“映射”、“哈希”、“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢?

对应关系,事实上他们就是在讨论我们这一讲介绍的“字典”,都是一个概念!
1. 尝试一下将数据(‘F’: 70, ‘C’: 67, ‘h’: 104, ‘i’: 105, ‘s’: 115)创建为一个字典并访问键 ‘C’ 对应的值?

mydict = {'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115}
mydict2 = dict(F = 70, C = 67, h = 104, i = 105, s = 115)
mydict3 = dict(zip(['F','C','h','i','s'],[10,67,104,105,115]))
mydict4 = dict({'F':70,'C':67,'h':104,'i':105,'s':115})
mydict5 = dict([('F',70),('C',67),('h',104),('i',105),('s',115)])
mydict5['C']

2. 用方括号(“[]”)括起来的数据我们叫列表,那么使用大括号(“{}”)括起来的数据我们就叫字典,对吗?
不对虽然我们用大括号(“{}”)把一些数据括起来了,但由于没有反映出这些数据有映射的关系,所以创建出来的不是字典,而是叫’set’的东西

3. 你如何理解有些东西字典做得到,但“万能的”列表却难以实现(臣妾做不到T_T)?

字典有直接对应关系,列表必须通过相同的索引号间接对应
4. 下边这些代码,他们都在执行一样的操作吗?你看得出差别吗?

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})

5.如图,你可以推测出打了马赛克部分的代码吗?

方法一:字符串分割
分析:字符串的分割方法,别学过就忘啦"

data = "1000,小甲鱼,男"
MyDict = {}
# 还记得字符串的分割方法吧,别学过就忘啦^_^
(MyDict['id'], MyDict['name'], MyDict['sex']) = data.split(',') print("ID:   " + MyDict['id'])
print("Name: " + MyDict['name'])
print("Sex   " + MyDict['sex'])

方法二:利用索引

data = "1000,小甲鱼,男"
MyDict = {}
(MyDict['id'], MyDict['name'], MyDict['sex']) = list((data[0],data[1],data[2]))print("ID:   " + MyDict['id'])
print("Name: " + MyDict['name'])
print("Sex   " + MyDict['sex'])

6.尝试利用字典的特性编写一个通讯录程序吧,功能如图

print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料  ---|')
print('|--- 2:插入新的联系人  ---|')
print('|--- 3:删除已有联系人  ---|')
print('|--- 4:退出通讯录程序  ---|')
info = dict()
while 1:#保证可以循环输入enter = int(input('请输入相关的指令代码:'))if enter == 1:name = input('请输入联系人姓名:')if name in info:print(name + ':'+ info[name])else:print('您输入的姓名不在通讯录中')if enter == 2:name = input('请输入联系人姓名:')if name not in info:phonenumber = input('请输入用户联系电话:')info[name] = phonenumberelse:print('您输入的姓名在通讯录中已存在 -->>'+ name + ':' + info[name])define = input('是否要修改用户资料(YES/NO):')if define == 'YES':phone = input('请输入用户联系电话:')info[name] = phoneif enter == 3:name = input('请输入联系人姓名:')if name in contacts:del(contacts[name])         # 也可以使用dict.pop()else:print('您输入的联系人不存在。')if enter == 4:break
print('感谢使用通讯录程序')

零基础入门学习Pyhton(23)字典:当索引不好用时相关推荐

  1. 零基础学python pdf-笔记《零基础入门学习Python(第2版)》PDF+课件+代码分析

    通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目 ...

  2. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版

    Python pdf(零基础入门学习Python)是一款功能强劲专业实用的Python电子书籍.想要零基础入门学习Python?那就快试试绿色先锋小编推荐的Python pdf最新版下载使用.由作者小 ...

  3. 零基础学python 视频_零基础入门学习PYTHON(第2版)(微课视频版)

    小甲鱼畅销图书重磅升级,针对Python 3.7,通过生动的实例,让读者在实践中理解概念,在轻松.愉快中学会Python! 本书提倡理解为主,应用为王.因此,只要有可能,小甲鱼(注:作者)都会通过生动 ...

  4. 《零基础入门学习Python》学习笔记(1-25)

    参考:<零基础入门学习python>http://edu.csdn.net/course/detail/906?locationNum=1&fps=1&ref=srch&a ...

  5. python零基础入门教程视频下载-Python零基础入门学习视频教程全42集,资源教程下载...

    课程名称 Python零基础入门学习视频教程全42集,资源教程下载 课程目录 001我和Python的第一次亲密接触 002用Python设计第一个游戏 003小插曲之变量和字符串 004改进我们的小 ...

  6. python基础教程视频教程百度云-Python零基础入门学习视频教程全42集百度云网盘下载...

    课程简介 Python零基础入门学习视频教程全42集百度云网盘下载 课程目录 042魔法方法:算术运算 041魔法方法:构造和析构 040类和对象:一些相关的BIF 039类和对象拾遗 038类和对象 ...

  7. 零基础python必背代码-零基础入门学习python 96集全

    零基础入门学习python 96集全 第000讲 愉快的开始(视频+课件)xa0 第001讲 我和Python第一次亲密接触(视频+课件)xa0 第002讲 用Python设第一个游戏(视频+课件+源 ...

  8. 零基础自学python教程-零基础入门学习Python_Python教程

    教程名称:零基础入门学习Python 课程目录: [易源码www.pnp8.com]000愉快的开始 [易源码www.pnp8.com]001我和Python的第一次亲密接触 [易源码www.pnp8 ...

  9. python零基础电子书免费下载-零基础入门学习Python PDF 扫描版

    给大家带来的一篇关于Python编程相关的电子书资源,介绍了关于Python.零基础.入门学习方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小59.3 MB,小甲鱼编写,目前豆瓣.亚马逊 ...

最新文章

  1. 学习Modern UI for WPF
  2. 思杰“个人云”翻开企业人本管理新篇章
  3. windows下qt5 kinect 2.0开发与环境配置
  4. MySQL查询优化-explain
  5. c#中使用ref和out传值
  6. 前端学习(1347):用户的增删改查操作4修改
  7. Linus Torvalds:我们都老了,但Linux维护者真的很难找
  8. CVPR2021 双图层实例分割,大幅提升遮挡处理性能
  9. 英语发音规则---A字母
  10. Windows Phone 7 开发探索笔记1——触控操作之Touch
  11. BZOJ3145 [Feyat cup 1.5]Str 后缀树、启发式合并
  12. SQL2005备份如何在SQL2000上还原
  13. 91 全能地图下载器和 bigemap地图下载器哪个好用?
  14. Win10预览版之BUG
  15. 关于编程-R语言跟Python到底学哪个好?
  16. TextView控件的使用(KongJian)
  17. 使用 html 来创建站点,怎样使用HTML创建免费网站
  18. 分手后怎样才能让前任重回你身边
  19. ipad批量删除图片
  20. .tar.lz压缩包解压

热门文章

  1. 二胖写参数校验的坎坷之路
  2. AI 时代,还不了解大数据?
  3. 高德亿级流量接入层服务的演化之路
  4. 效率翻倍!推荐10个超实用的神器工具,高效率办公必备
  5. 推荐7款实用强大的国产windows软件,你值得拥有!
  6. 生态伙伴 | 飞书携手ProcessOn助力企业高效远程办公,共同“战疫”
  7. 体系化思考,结构化表达
  8. 从《翔谈》说起,看美团
  9. 虚拟机下判断文件或目录是否存在
  10. excel宏转txt替换强制换行符_三个步骤学会用EXCEL批量导入anki题库