字典

alien_0 = {'color': 'green', 'points': 5}
alien_0['color']
'green'
alien_0['points']
5
alien_1 = {'color': 'green'}
new_points = alien_0['points']
print("You just earned " + str(new_points) + " points!")
You just earned 5 points!
alien_0['x_position'] = 0#给字典添加键值对
alien_0['y_position'] = 25#给字典添加键值对
alien_0
{'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}
alien_2 = {}
alien_0['color'] = 'yellow'
alien_0#修改字典中的值
{'color': 'yellow', 'points': 5, 'x_position': 0, 'y_position': 25}
alien_0['speed'] = 'medium'
alien_0
{'color': 'yellow','points': 5,'x_position': 0,'y_position': 25,'speed': 'medium'}
if alien_0['speed'] == 'slow': x_increment = 1
elif alien_0['speed'] == 'medium': x_increment = 2
else: # 这个外星人的速度一定很快x_increment = 3
# 新位置等于老位置加上增量
alien_0["x_position"]+=x_increment
alien_0["x_position"]
2
#删除键值对
del alien_0["color"]
alien_0#键值对现在永远消失了
{'points': 5, 'x_position': 2, 'y_position': 25, 'speed': 'medium'}
'''
在前面的示例中,字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以
使用字典来存储众多对象的同一种信息
'''
favorite_languages = { 'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python', }
'''
注意最后这里缩进,虽然没有要求,最后那里可以加个逗号,以便在下一行添加键值对做好准备。
'''
'\n注意最后这里缩进,虽然没有要求,最后那里可以加个逗号,以便在下一行添加键值对做好准备。\n'
favorite_languages["sarah"].title()
'C'
favorite_languages#注意这里.title()函数并没有改变字典里的数据,因为字符串是不可变类型。
{'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'python'}
#遍历所有的键-值对
favorite_languages.items()
dict_items([('jen', 'python'), ('sarah', 'c'), ('edward', 'ruby'), ('phil', 'python')])
for key,value in favorite_languages.items():print("key:",key)print("value:",value)
key: jen
value: python
key: sarah
value: c
key: edward
value: ruby
key: phil
value: python
for key,value in favorite_languages.items():print("key:"+key)print("value:"+value+"\n")#换行符本质上也是一个字符串
key:jen
value:pythonkey:sarah
value:ckey:edward
value:rubykey:phil
value:python
#遍历字典中的所有键
for name in favorite_languages.keys():print(name)
jen
sarah
edward
phil
'''
遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的for name in favorite_
languages.keys():替换为for name in favorite_languages:,输出将不变。
'''
for name in favorite_languages:print(name)
jen
sarah
edward
phil
for name in favorite_languages:print(name.title())
Jen
Sarah
Edward
Phil
if 'erin' not in favorite_languages.keys():print("Erin, please take our poll!")
Erin, please take our poll!
favorite_languages.keys()#方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键
dict_keys(['jen', 'sarah', 'edward', 'phil'])
#对上面这个框的列表进行排序,按字典顺序排序
sorted(favorite_languages.keys())
['edward', 'jen', 'phil', 'sarah']
#遍历字典中的所有值
'''
这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,
但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合(set)。
集合类似于列表,但每个元素都必须是独一无二的
'''
for language in favorite_languages.values():print(language.title())
Python
C
Ruby
Python
for language1 in set(favorite_languages.values()):print(language1.title())
Ruby
C
Python

嵌套

alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'yellow', 'points': 10}
alien_2 = {'color': 'red', 'points': 15}aliens = [alien_0, alien_1, alien_2]
#首先创建三个字典,其中每个字典都表示一个外星人
for alien in aliens:print(alien)
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}
{'color': 'red', 'points': 15}
#更符合现实的情形是,外星人不止三个,且每个外星人都是使用代码自动生成的
aliens1=[]
for alien_number in range(30):new_alien={'color': 'green', 'points': 5, 'speed': 'slow'}aliens1.append(new_alien)
aliens1
[{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'}]

for alien in aliens1[:5]:#切片显示前5个外星人print(alien)
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
len(aliens1)#显示创建了多少个外星人
30
for alien in aliens1[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10elif alien['color'] == 'yellow': alien['color'] = 'red' alien['speed'] = 'fast' alien['points'] = 15
aliens1[:5]
[{'color': 'red', 'points': 15, 'speed': 'fast'},{'color': 'red', 'points': 15, 'speed': 'fast'},{'color': 'red', 'points': 15, 'speed': 'fast'},{'color': 'green', 'points': 5, 'speed': 'slow'},{'color': 'green', 'points': 5, 'speed': 'slow'}]
'''
经常需要在列表中包含大量的字典,而其中每个字典都包含特定对象的众多信息。例如,你
可能需要为网站的每个用户创建一个字典(就像6.3.1节的user.py中那样),并将这些字典存储在
一个名为users的列表中。在这个列表中,所有字典的结构都相同,因此你可以遍历这个列表,
并以相同的方式处理其中的每个字典。'''
pizza = { 'crust': 'thick', 'toppings': ['mushrooms', 'extra cheese'], }
for topping in pizza["toppings"]:print(topping)
mushrooms
extra cheese
#字典嵌套列表
#遍历需要嵌套循环
favorite_languages = { 'jen': ['python', 'ruby'], 'sarah': ['c'], 'edward': ['ruby', 'go'], 'phil': ['python', 'haskell'], }
for name,languages in favorite_languages.items():print("name:",name,"\tlanguages:",languages)
name: jen    languages: ['python', 'ruby']
name: sarah     languages: ['c']
name: edward    languages: ['ruby', 'go']
name: phil  languages: ['python', 'haskell']
for name,languages in favorite_languages.items():print("\n",name.title())for language in languages:print(language.title())
 Jen
Python
RubySarah
CEdward
Ruby
GoPhil
Python
Haskell
users = { 'aeinstein': { 'first': 'albert', 'last': 'einstein', 'location': 'princeton', }, 'mcurie': { 'first': 'marie', 'last': 'curie', 'location': 'paris', }, }
for username,userinfo in users.items():print("\tusername:",username,"\tuserinfo:",userinfo)
 username: aeinstein     userinfo: {'first': 'albert', 'last': 'einstein', 'location': 'princeton'}username: mcurie  userinfo: {'first': 'marie', 'last': 'curie', 'location': 'paris'}

python从入门到实践回顾——字典相关推荐

  1. 《Python从入门到实践》读书笔记——第六章 字典

    <Python从入门到实践>读书笔记--第六章 字典 1. 一个简单的字典 alien_0 = {'color': 'green', 'points': 5}print(alien_0[' ...

  2. Python数据挖掘入门与实践-OneR分类算法

    Python数据挖掘入门与实践-OneR分类算法 OneR算法 OneR算法是根据已有的数据中,具有相同特征值的个体最可能属于哪个类别进行分类. 在本例中,只需选区Iris是个特征中分类效果最好的一个 ...

  3. Python从入门到实践

    Python从入门到实践 文章目录 Python从入门到实践 第2章 变量和简单的数据类型 2.2 变量的命名规则 2.3 字符串 2.4 数字 1.整数 2.浮点数 3.使用str( )避免类型错误 ...

  4. 董老师又双叒叕送书啦,10本《Python程序设计入门与实践》

    活动详情: 在本文文末留言,留言获得点赞. 自本文推送之时活动立即生效,当天2月20日晚上21:00结束,获赞最多的前10条留言,每人获赠一本书. 2月20日晚上21:01在本文文末置顶留言公布获奖名 ...

  5. 新书推荐--《Python程序设计入门与实践》

    过完春节快递小哥们上班以后,公众号会连续送几波书,敬请留意! 书名:Python程序设计入门与实践 ISBN:978-7-5606-5960-2 作者:董付国 页数:319页 例题数量:73例 演示代 ...

  6. Python从入门到实践习题答案(第九章 类)

    在学习<Python从入门到实践>,代码是自己编写的噢(虽然有些代码有参考其他大佬),点个赞再走8~ 9-1 餐馆:创建一个名为 Restaurant 的类,其方法__init__()设置 ...

  7. python从入门到实践第8章课后作业

    python从入门到实践第8章课后作业 #作业8-1 # def display_message(): # print('学习了如何定义函数') # display_message() # 作业8-2 ...

  8. Python数据挖掘入门与实践---用决策树预测获胜球队

    数据集来源:1.  2013-14 NBA Schedule and Results 2.2013年 NBA 赛季排名情况 参考书籍:<Python数据挖掘入门与实践> 1.加载数据集: ...

  9. python从入门到实践和从入门到精通-Python从入门到实践之列表|第1天

    User:你好我是森林 Date:2018-02-14 Mark:<Python从入门到实践> 列表 本章主要从列表的概念入手,逐步深入到对列表的操作. 列表 概念 列表由一系列按特定顺序 ...

最新文章

  1. 来体验一把职场人的真实训练,检验你的工程化交付能力!
  2. nginx和fpm的进程数配置和502,504错误
  3. 400分理科学计算机,理科400分能上哪些大学 高考400分算什么水平
  4. 在JavaScript中遭遇级联表达式陷阱
  5. 洛谷 P1308/暂无题解
  6. webjars管理静态资源
  7. Java8 中通过 Stream 对列表进行去重的几种方法
  8. 局域网传输文件_如何“互传文件”?简单几步,方便快捷
  9. 英语语法最终珍藏版笔记-8虚拟语气
  10. nginx 版本升级
  11. 安规电容知识详解,X电容和Y电容
  12. 含参变量积分------数学分析中重要的分析工具
  13. 读书笔记||控制论、信息论、系统论
  14. 【概率图与随机过程】25 从有向到无向:谈谈条件随机场
  15. JS基础-特效篇-随机点名册
  16. xDM Land Patterns 封装工具使用笔记
  17. 全国计算机等级考试Java上机真题
  18. Grafana Links
  19. DENSE 数据集 - STF 数据集(CVPR 2020)
  20. 中国彻底放弃2G网络仍需十年时间

热门文章

  1. 首款VR全身触控体验套件Teslasuit,让你浑身“来电”
  2. Word中快速插入目录
  3. ES transport client批量导入
  4. Docker - Tips
  5. 关于64位 MS SQL 导入导出 Oracle 引发 ORA-06413 的解决方法
  6. springside / springside4—CRUD页面教程
  7. jsx怎么往js里传参数_实践Vue 3.0做JSX(TSX)风格的组件开发
  8. 数组,结构体初始化为0
  9. Setup 和Hold (建立时间和保持时间)解析
  10. tomcat server.xml