python入门学习:5.字典

关键点:字典

5.1 使用字典5.2 遍历字典5.3 嵌套

5.1 使用字典

  在python中字典是一系列键-值对。每个键都和一个值关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。在python中,字典用花括号表示。如下,健-值是相互关联的两个值,键和值之间用冒号分开,而健-值对之间用逗号分开

1alien_0 = {'color':'green','point':5}

5.1.1 访问字典中的值
  要获取与键相关联的值,可以依次指定字典名和放在方括号内的键。如下所示:

1alien_0 = {'color':'green','point':5}
2print(alien_0['color'])

5.1.2 添加健-值对
  字典是一种动态结构,可随时在其中添加键-值对。要添加健-值对,可依次指定字典名、用方括号括起来的键和与之关联的值

1alien_0 = {'color':'green','point':5}
2print(alien_0)
3alien_0[x_position] = 0  #添加x位置
4alien_0[y_position] = 25 #添加y位置
5print(alien_0)
6{'point': 5, 'color': 'green'}
7{'y_position': 25, 'x_position': 0, 'point': 5, 'color': 'green'}
8#注意,健-值对的排列顺序与添加顺序不同。python不关注健值对的python顺序,只关心键和值之间的关联

5.1.3 创建一个空字典
  有些场合需要先创建一个空字典,使用一对空的{}即可

1alien_0 = {}
2alien_0['color'] = 'green'
3alien_0['point'] = 5
4print(alien_0)

5.1.4 修改字典中的值
  要修改字典中的值,可依次指定字典名、用方括号括起的键以及该键关联的新值。

1alien_0 = {'color':'green','point':5}
2print(alien_0)
3alien_0['color'] = 'red'
4print(alien_0)

5.1.5 删除键-值对
  对于字典中不需要的信息,可使用del语句将相应的键-值对彻底删除。使用del语句必须指定字典名和要删除的键。

1alien_0 = {}                    #创建一个空字典
2alien_0['color'] = 'green'      #添加一个健值对
3alien_0['point'] = 5            #添加一个健值对
4print(alien_0)
5del alien_0['point']            #删除一个健值对
6print(alien_0)

5.2 遍历字典

5.2.1 遍历所有的键-值对
  使用for循环通过方法items()遍历键和值

 1user_0 = {
2    'username': 'efermi',
3    'frist' : 'enrico',
4    'last':    'fermi'
5}
6user_0 = {
7    'username': 'efermi',
8    'frist' :   'enrico',
9    'last':     'fermi'
10}
11for key,value in user_0.items():
12    print("\nkeys:"+ key)
13    print("Value:"+value)
14#注意遍历字典时,健值对返回的顺序也与存储顺序不同

5.2.2 遍历字典中的所有键
  for循环遍历,通过方法keys()获取健值

1user_0 = {
2    'username': 'efermi',
3    'frist' :   'enrico',
4    'last':     'fermi'
5}
6for key in user_0.keys():
7   print("\nkeys:"+ key)

5.2.3 按顺序遍历字典中的所有键
  字典总是明确记录键和值之间的关联关系,但是获取字典元素时,获取顺序是不可预测的,要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。为此可以使用函数sorted()来获得按特定顺序排列的键列表的腐败:

 1favorite_languages = {
2    'jen': 'python',
3    'sarah': 'c',
4    'edward':'ruby',
5    'phil': 'python',
6    }
7for name in sorted(favorite_languages.keys()): #生成key列表
8#按字母排序
9Edward,thank you for talking the poll.
10Jen,thank you for talking the poll.
11Phil,thank you for talking the poll.
12Sarah,thank you for talking the poll.

5.2.4 遍历字典中的所有值
  如果只关心值,可通过values(),返回一个值列表,不包含任何键

 1favorite_languages = {
2    'jen': 'python',
3    'sarah': 'c',
4    'edward':'ruby',
5    'phil': 'python',
6    }
7for language in favorite_languages.values(): #生成value列表
8    print(language.title())
9
10C
11Ruby
12Python
13Python

  通过set()可以让python找出列表中独一无二的元素,剔除重复元素

1favorite_languages = {
2    'jen': 'python',
3    'sarah': 'c',
4    'edward':'ruby',
5    'phil': 'python',
6    }
7for language in set(favorite_languages.values()): #生成value列表
8    print(language.title())

5.3 嵌套

  有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。
5.3.1 字典列表
  列表中嵌套字典。

1alien_0 = {'color': 'green','point':5}
2alien_1 = {'color': 'yellow','point':10}
3alien_2 = {'color': 'red','point':15}
4aliens = [alien_0,alien_1,alien_2]
5for alien in aliens:
6    print(alien)

5.3.2 在字典中存储列表
  有时候需要将字典存储在列表中。例如:

1pizza = {
2    'crust':'thick',
3    'toppings':['mushrooms','extra chesse'],
4    }
5print("you ordered a" + pizza['crust'] + "-crust pizaa" + "whith the following toppings:")
6for topping in pizza['toppings']:#遍历字典中列表
7    print("\t" + topping)

5.3.3 在字典中存储字典
  在字典中也可以嵌套字典,不过这样会使代码结构变地复杂

 1users = {
2    'aeinstein' : {
3        'frist':'albert',
4        'last':'einstein',
5        'location':'princetion',
6        },
7    'mcurie' : {
8        'frist':'marie',
9        'last':'curie',
10        'location':'paris',
11        },
12    }
13for username, user_info in users.items():
14    print("\nUserName: "+ username)
15    full_name = user_info['frist'] + " " + user_info['last']
16    location = user_info['location']
17
18    print("\tfull name: "+ full_name.title())
19    print("\tlocation: "+ location.title())

python入门学习:5.字典的更多相关文章

  1. python入门学习:7.函数

    python入门学习:7.函数 关键点:函数 7.1 定义函数7.2 传递实参7.3 返回值7.4 传递列表7.5 传递任意数量的实参7.6 将函数存储在模块中 7.1 定义函数   使用关键字def ...

  2. python入门学习:6.用户输入和while循环

    python入门学习:6.用户输入和while循环 关键点:输入.while循环 6.1 函数input()工作原理6.2 while循环简介6.3 使用while循环处理字典和列表 6.1 函数in ...

  3. python入门学习:9.文件和异常

    python入门学习:9.文件和异常 关键点:文件.异常 9.1 从文件中读取数据9.2 写入文件9.3 异常9.4 存储数据 9.1 从文件中读取数据 9.1.1 读取整个文件  首先创建一个pi_ ...

  4. python入门学习:8.类

    python入门学习:8.类 关键点:类 8.1 创建和使用类8.2 使用类和实例8.3 继承8.4 导入类 8.1 创建和使用类   面向对象编程是最有效的软件编写方法之一.在面向对象编程中,你编写 ...

  5. python入门学习:4.if语句

    python入门学习:4.if语句 关键点:判断 4.1 一个简单的测试4.2 条件测试4.3 if语句 4.1 一个简单的测试   if语句基本格式如下,注意不要漏了冒号 1if 条件 :2     ...

  6. python入门学习:3.操作列表

    python入门学习:3.操作列表 关键点:列表 3.1 遍历整个列表3.2 创建数值列表3.3 使用列表3.4 元组 3.1 遍历整个列表   循环这种概念很重要,因为它是计算机自动完成重复工作的常 ...

  7. python入门学习:2.列表简介

    python入门学习:2.列表简介 关键点:列表 2.1 列表是什么2.2 修改.添加和删除元素2.3 组织列表 2.1 列表是什么   列表,是由一系列按特定顺序排列的元素组成.你可以创建包含字母表 ...

  8. Python入门学习:1.变量和简单的数据类型

    python入门学习:1.变量和简单的数据类型 关键点:变量.字符串.数字 1.1 变量的命名和使用1.2 字符串1.3 数字1.4 注释 1.1 变量的命名和使用   变量,顾名思义是一个可变的量, ...

  9. Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!

    Python入门学习之路,怎么 “开心,高效,踏实” 地把Python学好?兴趣,兴趣,兴趣!找到你自己感兴趣的点进行切入,并找到兴趣点进行自我驱动是最好的学习方式!       推荐两本书,一本作为 ...

随机推荐

  1. 13 ,CSS 入门基础,行内排版内嵌式排版和外部排版样式

    1.认识 CSS 2.传统 HTML 设计网页版面的缺点 3.CSS 的特点 4.CSS 的排版样式 13.1 认识CSS CSS的英文全名是 Cascading Style Sheets,中文可翻译 ...

  2. ASP.NET MVC Json的序列化和反序列化

    1.利用js进行序列化成字符串和反序列化 var personObj = {name:"Tom",age:16}; // 利用JS序列化成字符串 var personStr = J ...

  3. Android为TV端助力 转载:Android绘图Canvas十八般武器之Shader详解及实战篇(下)

    LinearGradient 线性渐变渲染器 LinearGradient中文翻译过来就是线性渐变的意思.线性渐变通俗来讲就是给起点设置一个颜色值如#faf84d,终点设置一个颜色值如#CC423C, ...

  4. (后端)spring的@Transactional注解详细用法(转)

    转自一人浅醉-博客园: 事务隔离级别 隔离级别是指若干个并发的事务之间的隔离程度.TransactionDefinition 接口中定义了五个表示隔离级别的常量: TransactionDefinit ...

  5. 关于js脚本宿主对脚本代码的绑定

    脚本代码绑定,Unity3D是这样做的.为了体现Unity3D的基于对象设计,Unity3D可以为每个对象绑定多个脚本文件,可以是js,可以是cs,也可以是boo. threejs/editor也有与 ...

  6. (转载)彻底的理解:WebService到底是什么?

    最近老是有人跟我提web service接口,怎么,怎么滴,我觉得很扎耳朵,web service是一种将服务器的服务封装起来的技术,表现为对外提供接口,所以,web service不是一种接口 !! ...

  7. Ext 日期格式化

    //日期格式化 Date.prototype.Format = function (fmt) { var o = { , //月份 "d+": this.getDate(), // ...

  8. SQL Server 2012还原一直卡在ASYNC_IO_COMPLETION浅析

    在SQL Server 2012(11.0.7001.0)下面在还原一个数据库(备份文件40多G大小,实际数据库大小300G),在还原过程中,出现一直等待ASYNC_IO_COMPLETION,如下测 ...

  9. Big Endian  和 Little Endian 模式的区别

    谈到字节序的问题,必然牵涉到两大CPU派系.那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU.PowerPC系列采用big endian方式存储数据,而x86系列则采用l ...

  10. 洗礼灵魂,修炼python(79)--全栈项目实战篇(7)—— 多级目录菜单之地址管理系统升级版

    要求: 1.在上一篇的地址管理系统的基础上做升级改动 2.添加增删改的功能 3.尽量的贴近生活常识中的地址管理 分析: 需求不用多说了,干就完了 相关文件源码地址:github 这次由于要有增删改的操 ...