Python 从入门到放弃(三)

2011/12/11 Mon 13:58

字典

用名字来引用值的数据结构叫做映射(mapping),python中用字典实现。

创建使用字典

直接创建:

phonebook = {'Alice': '1234', 'Bob': '2345'}
phonebook
Out[224]: {'Alice': '1234', 'Bob': '2345'}

或者通过关键词参数:

phonebook = dict(Alice = '1234', Bob='2345')
# 注意关键字不能是expression,不是‘Alice’而是Alice
phonebook
Out[228]: {'Alice': '1234', 'Bob': '2345'}

或者通过键值对序列建立:

items = [('Alice','1234'), ('Bob','2345')]
phonebook = dict(items)
phonebook
Out[232]: {'Alice': '1234', 'Bob': '2345'}

dict中的key可以是任意不可变类型。,如果key不存在,自动添加,比如:

phonebook
Out[232]: {'Alice': '1234', 'Bob': '2345'}
phonebook['Conan'] = '3456'
phonebook
Out[235]: {'Alice': '1234', 'Bob': '2345', 'Conan': '3456'}

格式化文本:

'Conan\'s phonenumber is %(Conan)s' % phonebook
Out[237]: "Conan's phonenumber is 3456"

注意需要在百分号之后指定key,用()括起来,并在后面跟上其他的说明元素,如s。

字典方法

copy实现浅复制:

phonebook
Out[261]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456', '6666']}
y = phonebook.copy()
y['Bob'] = '8888'
y
Out[264]: {'Alice': '1234', 'Bob': '8888', 'Conan': ['3456', '6666']}
phonebook
Out[265]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456', '6666']}
y['Conan'].remove('6666')
y
Out[267]: {'Alice': '1234', 'Bob': '8888', 'Conan': ['3456']}
phonebook
Out[268]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456']}

在浅复制中,替换不影响原来的,但是原位修改是不行滴,因为原始字典中也有同样的值,也会受影响。

深复制:deepcopy

from copy import deepcopy
dc = deepcopy(phonebook)
dc
Out[271]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456']}
phonebook
Out[272]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456']}
dc['Conan'].remove('3456')
dc
Out[274]: {'Alice': '1234', 'Bob': '2345', 'Conan': []}
phonebook
Out[275]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456']}
dc['Kid'] = '9999'
dc
Out[277]: {'Alice': '1234', 'Bob': '2345', 'Conan': [], 'Kid': '9999'}
phonebook
Out[278]: {'Alice': '1234', 'Bob': '2345', 'Conan': ['3456']}

从key的序列中建构dict:fromkeys

dict.fromkeys(['alpha','beta', 'gamma'])
Out[279]: {'alpha': None, 'beta': None, 'gamma': None}

访问字典项:get,对于没有的项不会报错,会返回None或者自定义的default。而直接用key取就会报错:

greek
Out[288]: {'alpha': 'a', 'beta': 'b', 'gamma': 'c'}
greek.get('alpha')
Out[289]: 'a'
greek.get('delta')
greek.get('delta','N/A')
Out[291]: 'N/A'
greek.get('beta','N/A')
Out[292]: 'b'
greek['gamma']
Out[293]: 'c'
greek['delta']
Traceback (most recent call last):File "<ipython-input-294-e600c2b8f646>", line 1, in <module>greek['delta']
KeyError: 'delta'

检索键值存在:has_key

greek.has_key('alpha')
Out[295]: Truegreek.has_key('eta')
Out[296]: False

返回(键,值)对:items

greek.items()
Out[297]: [('alpha', 'a'), ('beta', 'b'), ('gamma', 'c')]

返回键:keys

greek.keys()
Out[298]: ['alpha', 'beta', 'gamma']

返回值:values

greek
Out[313]: {'alpha': 'A', 'beta': 'b', 'eta': 'e', 'gamma': 'c'}
greek.values()
Out[314]: ['b', 'e', 'A', 'c']

设置default:setdefault

greek.setdefault('alpha','Nil')
Out[299]: 'a'
greek.setdefault('zeta','Nil')
Out[300]: 'Nil'
greek
Out[301]: {'alpha': 'a', 'beta': 'b', 'gamma': 'c', 'zeta': 'Nil'}

可以看出,如果已经有了该key,返回其value,否则加入并设置default。

用x字典更新y字典:y.update(x)
如果y中没有x中的某项,即没有该key,则添加上,如果有,则用x中该key对应的value更新。

newgreek = dict(alpha='A',eta='e')
newgreek
Out[310]: {'alpha': 'A', 'eta': 'e'}
greek
Out[311]: {'alpha': 'a', 'beta': 'b', 'gamma': 'c'}
greek.update(newgreek)
greek
Out[313]: {'alpha': 'A', 'beta': 'b', 'eta': 'e', 'gamma': 'c'}

THE END

星期一, 11. 十二月 2017 03:12下午

Python 从入门到放弃(三)相关推荐

  1. python从入门到放弃图片大全-Python 从入门到放弃(一)

    Python 从入门到放弃(一) 一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读<Python基础教程>([挪] Magnus Lie Hetland 著) 的 ...

  2. python从入门到放弃表情图-Python 从入门到放弃(一)

    Python 从入门到放弃(一) 一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读<Python基础教程>([挪] Magnus Lie Hetland 著) 的 ...

  3. python从入门到放弃 图-python从入门到放弃(二)

    编码类型ASCII码:主要用来显示英文和其他西欧语言,用8位来表示,也就是一个字节,最多只能显示256个符号 UNICODE:也叫万国码,为了解决传统的字符编码方案的局限而产生的,它为每种语言的每个字 ...

  4. 《Python从入门到放弃》(Yanlz+Unity+SteamVR+云计算+5G+AI=VR云游戏=Python+PyCharm+人工智能+无人驾驶+数据可视化+人机交互+立钻哥哥+==)

    <Python从入门到放弃> <Python从入门到放弃> 版本 作者 参与者 完成日期 备注 YanlzAI_Python_V01_1.0 严立钻 2019.09.25 ## ...

  5. python从入门到放弃图片-Python从入门到放弃:与用户交互

    原标题:Python从入门到放弃:与用户交互 为什么交互(了解) 让我们来回顾计算机的发明有何意义,计算机的发明是为了奴役计算机,解放劳动力.假设我们现在写了一个ATM系统取代了柜员,如果我们要在这台 ...

  6. python从入门到放弃系列恶搞短片-太惨!学Python方法用错,直接从入门到放弃!...

    原标题:太惨!学Python方法用错,直接从入门到放弃! 从你开始学习编程的那一刻起,就注定了以后所要走的路-从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在 ...

  7. python新手入门到放弃_python萌新:从零基础入门到放弃

    原标题:python萌新:从零基础入门到放弃 不管是在什么领域,自学者都占绝大多数,你说自学可以吗?可以,没问题的,只需要你具备以下几点最基础的能力: 第一点:天赋.对于python而言其实是非常需要 ...

  8. python从入门到放弃-掌握这个学习方法,让 Python 不再从入门到放弃

    随着数据科学概念的普及,Python 这门并不算新的语言火得一塌糊涂.因为写了几篇用 Python 做数据分析的 文章,经常有读者和学生在留言区问我,想学习 Python,该如何入手?我经常需要根据他 ...

  9. 作为过来人给Python编程入门者的三点忠告

    在你学习Python编程入门的过程中,是否有过以下经历,或正在面临类似比较尴尬的局面: 网上找了很多Python编程入门的学习资料,可还是不知道从哪里看起 买了本书,过了很久也没有看完第一章 开始还能 ...

最新文章

  1. Spring 容器IOC解析及简单实现
  2. mysql数据库入门教程(9):数据的常见约束
  3. SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景
  4. 使用Spring Security和jdbc的Spring Boot第2部分
  5. 【51单片机快速入门指南】4.3.4: MPU6050使用Madgwick AHRS算法实现六轴姿态融合获取四元数、欧拉角
  6. 深入理解 gRPC 协议--理解protobuf/.proto/http2
  7. 主流的数据可视化工具介绍
  8. 教你手工mysql拆库
  9. 全网首发:使用安卓MediaCodec Encoder进行编码时的方向问题
  10. 80端口未被占用,却依然提示已被占用
  11. 我的python中级班学习之路(全程笔记第一模块) (第二章)(第3部分:元祖、哈希(hash)、字典、集合...
  12. 解决Windows无法访问指定设备路径或文件,您可能没有合适的权限访问这个项目
  13. centos6 php网页,centos怎样建网站
  14. 微信公众号登录和获得access_token和发送模板消息
  15. IPSEC对称解密以及非对称加密
  16. 引入第三方sdk错误提示
  17. NRI的统计学意义与临床意义
  18. Hive体系结构介绍
  19. 线性运放HCNR201-500E构成的模拟信号隔离放大电路
  20. 异步FIFO的原理以及可综合的Verilog代码

热门文章

  1. iphone 信号对应设备_如果iPhone收到不良信号该怎么办
  2. 围绕开源的系列思考之二——企业篇
  3. 使用OSM通过ArcGis显示城市线路地图
  4. zz什么是beacons - 在Web Analytics中的应用(网站分析的灯塔)
  5. Redis五大数据类型常用命令与使用场景总结
  6. 《左手数据,右手图表》
  7. php下载链接 迅雷下载,php实现把url转换迅雷thunder资源下载地址的方法
  8. 本地网络环境测试工具,很不错的工具
  9. Android Camera之Deferred Surface
  10. DataGrip连接Mysql报08S01解决方案