一、一个简单的字典:alien_0存储外星人的颜色和点数,使用print打印出来

  1. alien_0 = {'color': 'green','points': 5}
  2. print(alien_0['color'])
  3. print(alien_0['points'])
  4. #输出结果:
  5. green
  6. 5

二、使用字典:键-值,值可以为数字、字符串、列表或字典。字典用{ }标识。

1. 访问字典中的值

  1. alien_0 = {'color': 'green','points': 5}
  2. new_points = alien_0['points']
  3. print("You just earned " + str(new_points) + ' points!')
  4. #输出结果:You just earned 5 points!

 解析以上代码

a. 先定义一个字典

b. 将points这个键对应的值存储到new_points中

c. 将整数转换成字符串,输出玩家获得了多少点

2. 添加键-值对:字典是一种动态结构,可随时在其中添加键-值对。python不关注键-值对添加的顺序,只关心键-值之间的关联关系。

  1. alien_0 = {'color': 'green','points': 5}
  2. print(alien_0)
  3. alien_0['x_position']=0
  4. alien_0['y_position']=25
  5. print(alien_0)
  6. #输出结果:
  7. {'color': 'green', 'points': 5}
  8. {'color': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

3. 先创建一个空字典

  1. alien_0 = {}
  2. alien_0['color'] = 'green'
  3. alien_0['points'] = 5
  4. print(alien_0)
  5. #输出结果:{'color': 'green', 'points': 5}

备注:使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,通常需要定义一个空字典。

4. 修改字典中的值:对一个能够以不同速度移动的外星人的位置进行跟踪,确定外星人将向右移动多远

  1. alien_0 = {'x_position':0,'y_position':25,'speed':'medium'}
  2. print("original x_position:" + str(alien_0['x_position']))
  3. #向右移动外星人
  4. #根据外星人当前速度决定将其移动多远
  5. if alien_0['speed']=='slow':
  6. x_increment = 1
  7. elif alien_0['speed']=='medium':
  8. x_increment = 2
  9. else:
  10. #这个外星人的速度一定很快
  11. x_increment = 3
  12.  
  13. alien_0['x_position'] = alien_0['x_position'] + x_increment
  14. print("New x_position:" + str(alien_0['x_position']))
  15.  
  16. #输出结果:
  17. original x_position:0
  18. New x_position:2

 解析以上代码:

a. 定义一个外星人,包含初始的x 坐标和y 坐标,速度 ‘medium’,并打印出原始的x 坐标

b. 使用if-elif-else 结构来确定外形人向右移动多远,并将这个值存储在变量x_increment中

c. 确定移动量后,将x_increment 和x_position 当前的值相加,再将结果关联到字典的键x_position 中,并打印出x_position

5. 删除键-值对:对于字典中不需要的信息,可用del 语句将对应的键-值对彻底删除。

  1. alien_0 = {'color':'green','points':5}
  2. print(alien_0)
  3. del alien_0['points']
  4. print(alien_0)
  5. #输出结果:
  6. {'color': 'green', 'points': 5}
  7. {'color': 'green'}

6. 由类似对象组成的字典:字典多行显示

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. print("Sarah's favorite language is " +
       favorite_language['sarah'].title() +
       ".")
  8. #输出结果:
  9. Sarah's favorite language is C.

三、遍历字典

1. 遍历所有的键-值对

  1. user_0 = {
  2. 'username':'efermi',
  3. 'first':'enrico',
  4. 'last':'fermi'
  5. }
  6. for key,value in user_0.items():
  7. print("\nKey:"+ key)
  8. print("Value:"+value)
  9.  
  10. #输出结果:
  11. Key:username
  12. Value:efermi
  13.  
  14. Key:first
  15. Value:enrico
  16.  
  17. Key:last
  18. Value:fermi

 解析以上代码:

a. 遍历字典的for 循环,可声明两个变量,用于存储键-值对中的键和值; items() 函数以列表返回可遍历的(键, 值) 元组数组。

b. 使用两个变量来打印每个键及其关联的值;\n:确保在输出每个键-值对前插入一个空行

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. for name,language in favorite_language.items():
  8. print(name.title() + "'s favorite language is " + language.title() + ".")
  9.  
  10. #输出结果:
  11. Jen's favorite language is Python.
  12. Sarah's favorite language is C.
  13. Edward's favorite language is Ruby.
  14. Phil's favorite language is Python.

2. 遍历字典中的所有键:方法keys( )

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. for name in favorite_language.keys(): #提取字典favorite_language中的所有键,并依次存储到变量name中
  8. print(name.title()) #输出列出每个被调查的名字
  9.  
  10. #输出结果:
  11. Jen
  12. Sarah
  13. Edward
  14. Phil 
  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. friends = ['phil','sarah']
  8. for name in favorite_language.keys():
  9. print(name.title())
  10. if name in friends:
  11. print("Hi "+ name.title() +
  12. ", I see your favorite language is " +
  13. favorite_language[name].title()+"!"
  14. )
  15. # 输出结果:
  16. Jen
  17. Sarah
  18. Hi Sarah, I see your favorite language is C!
  19. Edward
  20. Phil
  21. Hi Phil, I see your favorite language is Python!

解析以上代码

a. for循环遍历所有的key

b. 再用if 判断name变量是否在friends 列表中,如果在,就在key后面再打印一句话来表示其朋友喜欢的语言

3. 按顺序遍历字典中的所有值:for循环对返回的键进行排序。可用函数 sorted( )来获得按特定顺序排序的键列表的副本。

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. for name in sorted(favorite_language.keys()): #对方法dictionary.keys( )的结果调用了函数sorted( ),让python列出字典中所有的键,并在遍历前对这个列表进行排序。
  8. print(name.title()+ ",thank you for taking the poll.")
  9.  
  10. #输出结果:
  11. Edward,thank you for taking the poll.
  12. Jen,thank you for taking the poll.
  13. Phil,thank you for taking the poll.
  14. Sarah,thank you for taking the poll.

4. 遍历字典中的所有值:使用方法values( ),它返回一个值列表,而不包含任何键。

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. print("The following language have been mentioned:")
  8. for language in favorite_language.values(): #这条for语句提取字典中的每个值,并将它们依次存储到变量language中。通过打印这些纸,就获得一个列表。
  9. print(language.title()) # dictionary.values( )的缺点:不考虑值得重复性,无法剔除重复项
  10.  
  11. #输出结果:
  12. The following language have been mentioned:
  13. Python
  14. C
  15. Ruby
  16. Python

 备注:为了剔除元素中的重复项,使用集合(set)。集合类似于列表,但每个元素都必须是独一无二的。

  1. favorite_language = {
  2. 'jen': 'python',
  3. 'sarah':'c',
  4. 'edward':'ruby',
  5. 'phil':'python',
  6. }
  7. print("The following language have been mentioned:")
  8. for language in set(favorite_language.values()): #集合(set)找到列表中独一无二的元素,并使用这些元素来创建一个集合
  9. print(language.title())
  10.  
  11. #输出结果:
  12. The following language have been mentioned:
  13. C
  14. Python
  15. Ruby

  

四、嵌套

  需要将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套。列表中嵌套字典,或者字典中嵌套列表或字典。

1. 字典列表

 A. 需要创建多个外形人的信息。方法:创建一个外星人的列表,其中每个外星人都是一个字典,包含有关该外星人的各种信息。

  1. #创建一个用于存储外星人的空列表
  2. aliens =[]
  3. #创建30个绿色的外星人
  4. for alien_number in range(30):
  5. new_alien = {'color':'green','point':5,'speed':'slow'}
  6. aliens.append(new_alien)
  7. #显示前五个外星人
  8. for alien in aliens[:5]:
  9. print(alien)
  10. print("...")
  11. #显示创建了多少个外星人
  12. print("Total number of aliens:" + str(len(aliens)))
  13.  
  14. #输出结果:
  15. {'color': 'green', 'point': 5, 'speed': 'slow'}
  16. {'color': 'green', 'point': 5, 'speed': 'slow'}
  17. {'color': 'green', 'point': 5, 'speed': 'slow'}
  18. {'color': 'green', 'point': 5, 'speed': 'slow'}
  19. {'color': 'green', 'point': 5, 'speed': 'slow'}
  20. ...
  21. Total number of aliens:30

 解析以上代码:

a. 创建一个空列表,用来存储接下来创建的所有外星人

b. 用range方法创建30个外星人,并将其附件到列表aliens 末尾

c. 使用切片来打印前五个外星人

d. 打印列表长度

  B.将前三个外星人修改为黄色的,速度为中等且值10个点;如果外星人有黄色,则改为红色速度快速且值15个点。用for循环和if-elif 语句来修改。

  1. #创建一个用于存储外星人的空列表
  2. aliens =[]
  3. #创建30个绿色的外星人
  4. for alien_number in range(0,30):
  5. new_alien = {'color':'green','point':5,'speed':'slow'}
  6. aliens.append(new_alien)
  7.  
  8. #修改外星人字典中的value
  9. for alien in aliens[0:3]:
  10. if alien['color'] =='green':
  11. alien['color']= 'yellow'
  12. alien['point'] = 10
  13. alien['speed'] = 'medium'
  14. elif alien['color']=='yellow':
  15. alien['color']= 'red'
  16. alien['point'] = 15
  17. alien['speed'] = 'fast'
  18.  
  19. #显示前五个外星人
  20. for alien in aliens[0:5]:
  21. print(alien)
  22. print("...")
  23.  
  24. #输出结果:
  25. {'color': 'yellow', 'point': 10, 'speed': 'medium'}
  26. {'color': 'yellow', 'point': 10, 'speed': 'medium'}
  27. {'color': 'yellow', 'point': 10, 'speed': 'medium'}
  28. {'color': 'green', 'point': 5, 'speed': 'slow'}
  29. {'color': 'green', 'point': 5, 'speed': 'slow'}
  30. ...

2. 字典中存储列表

A. 需要在字典中将一个键关联多个值时,需要在字典中嵌套一个列表。如披萨配料,不仅包含配料列表,也包含其他有关披萨的描述

  1. #存储所点披萨的信息
  2. pizza = {
  3. 'crust':'thick', #创建的字典,一个键‘crust’,值‘thick’;另一个键‘topping’,值是一个列表,包含顾客要求要添加的所有配料
  4. 'toppings':['mushrooms','extra cheese'],
  5. }
  6. #概述所点的披萨
  7. print("You ordered a "+ pizza['crust'] + "-crust pizza "+
  8. "with the following toppings:")
  9. for topping in pizza['toppings']: #for循环是问了访问配料列表,使用键‘toppings’
  10. print("\t" + topping)
  11. #输出结果:
  12. You ordered a thick-crust pizza with the following toppings:
  13. mushrooms
  14. extra cheese

B. 在for循环中做if-判断

  1. favorite_languages = {
  2. 'jen':['python','ruby'],
  3. 'sarah':['c'],
  4. 'edward':['ruby','go'],
  5. 'phil':['python','haskell'],
  6. }
  7. for name,languages in favorite_languages.items():
  8. if len(languages) !=1: #用len(language)判断是否是多种语言,如果是,就按if模块输出,如果不是,就按else模块输出
  9. print("\n"+ name.title() + "'s favorite language are:")
  10. for language in languages:
  11. print("\t"+language.title())
  12. else:
  13. for language in languages:
  14. print("\n"+ name.title() + "'s favorite language is: " + language.title())
  15.  
  16. #输出结果:
  17. Jen's favorite language are:
  18. Python
  19. Ruby
  20.  
  21. Sarah's favorite language is: C
  22.  
  23. Edward's favorite language are:
  24. Ruby
  25. Go
  26.  
  27. Phil's favorite language are:
  28. Python
  29. Haskell

3. 在字典中存储字典:多个网站用户,每个都有独特的用户名作为字典的键,用户信息用另一个字典存储作为字典的值

  1. users = {
  2. 'aeinstein':{ #用户名有两个作为键,两个用户的信息用字典表示作为值
  3. 'first':'albert',
  4. 'last':'einstein',
  5. 'location':'princeton',
  6. },
  7. 'mcurie':{
  8. 'first':'marie',
  9. 'last':'curie',
  10. 'location':'paris',
  11. },
  12. }
  13. for username, user_info in users.items(): #遍历字典users,依次将每个键存储在变量username中,依次将与当前键相关联的字典存储在变量user_info中
  14. print("\nUsername:" + username) #将用户名打印出来
  15. full_name = user_info['first'] + " " +user_info['last'] #访问内部字典
  16. location = user_info['location']
  17. print("\tFull name: " + full_name.title()) #打印用户的简要信息
  18. print("\tLocation: " + location.title())
  19. #输出结果:
  20. Username:aeinstein
  21. Full name: Albert Einstein
  22. Location: Princeton
  23.  
  24. Username:mcurie
  25. Full name: Marie Curie
  26. Location: Paris

备注:以上内容摘录自《Python编程:从入门到实践》

 

python编程:从入门到实践----第六章>字典的更多相关文章

  1. #Python编程从入门到实践#第四章笔记

    #Python编程从入门到实践#第四章笔记   操作列表 ​​​1.遍历列表 使用for循环,遍历values列表 for value in values: print(value) 2.数字列表 使 ...

  2. Python:从入门到实践--第六章--字典--练习

    #1.人:使用一个字典来存储一个熟人的信息;包括姓,名,年龄和居住的城市.将字典中的每项信息都打印出来 friend = { 'last_name':'马', 'first_name':'脑壳', ' ...

  3. 《Python编程从入门到实践》第二章_变量和简单数据类型

    什么是变量呢? 举例: >>> message = "Hello,Python!" >>> print (message) Hello,Pyth ...

  4. #Python编程从入门到实践#第三章笔记

      列表简介 ​​​1.什么是列表 列表:由一系列按也顶顺序排列的元素组成.元素之间可以没有任何关系. 列表:用方括号[]表示,并用逗号分隔其中元素.名称一般为复数 2.访问元素 (1)列表是有序集合 ...

  5. Python编程从入门到实践笔记——异常和存储数据

    Python编程从入门到实践笔记——异常和存储数据 #coding=gbk #Python编程从入门到实践笔记——异常和存储数据 #10.3异常 #Python使用被称为异常的特殊对象来管理程序执行期 ...

  6. Python编程从入门到实践笔记——文件

    Python编程从入门到实践笔记——文件 #coding=gbk #Python编程从入门到实践笔记——文件 #10.1从文件中读取数据 #1.读取整个文件 file_name = 'pi_digit ...

  7. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  8. Python编程从入门到实践笔记——函数

    Python编程从入门到实践笔记——函数 #coding=gbk #Python编程从入门到实践笔记——函数 #8.1定义函数 def 函数名(形参): # [缩进]注释+函数体 #1.向函数传递信息 ...

  9. Python编程从入门到实践笔记——用户输入和while循环

    Python编程从入门到实践笔记——用户输入和while循环 #coding=utf-8 #函数input()让程序暂停运行,等待用户输入一些文本.得到用户的输入以后将其存储在一个变量中,方便后续使用 ...

随机推荐

  1. ubuntu18.04下载yarn

    下载curl sudo apt-get update && sudo apt-get install curl 配置库 curl -sS https://dl.yarnpkg.com/ ...

  2. 应用于Oculus Quest的VR头显应用

    项目需要一个VR头显项目来展示算法成果,设备为Oculus Quest一体机,基于android平台(平台要切换为android),体验了下设备效果还行,但还是有点沙窗效应.记录一下开发流程. 先贴个 ...

  3. G. Repeat it

    G. Repeat it time limit per test 2.0 s memory limit per test 64 MB input standard input output stand ...

  4. 小程序封装API

    一般我们https请求都是通过wx.request来请求,但是这种请求如果多了,页面会混乱不说,还不好管理,因此我将请求单独拎出去,方便管理,也方便后期维护. // api.js const API_ ...

  5. MAC设置允许任何来源

    在升级了macOS Sierra (10.12)版本后在“安全性与隐私”中不再有“任何来源”选项 接下来,我们就打开终端,然后输入以下命令: sudo spctl --master-disable 输 ...

  6. Docker安装,基本概念,执行流程,生命周期简介

    Docker基本概念 在使用Docker前,首先要先知道Docker中这几个常用的概念: 镜像:镜像是文件,只读的,提供了运行完整软硬件应用程序的集装箱. 容器:是镜像的实例,由Docker负责创建, ...

  7. 指令——cd

    一个完整的指令的标准格式: Linux通用的格式——#指令主体(空格) [选项](空格) [操作对象] 一个指令可以包含多个选项,操作对象也可以是多个. 命令:#cd (change director ...

  8. Erlang/Elixir精选-第5期(20200106)

    The forgotten ideas in computer science-Joe Armestrong 在2020年的第一期里面,一起回顾2018年Joe的 The forgotten idea ...

  9. 七十八、SAP中数据库操作之查询条数限制

    一.UP TO <数量> ROWS,表示查询出多少条数据 二.效果如下

  10. HTMLCSS学习

    子选择器:第一代 .food>li{border:1px solid red;} 后代选择器:所有后代         .first  span{color:red;} 通用选择器:       ...