2.3 遍历字典

遍历字典的方式: 1遍历字典的所有的键-值对

2遍历字典的键

3遍历字典的值

2.3.1 遍历所有的键-值对

user_0 = {'username':'efermi','first':'enrico','last':'fermi',}

获悉字典user_0中的所有信息 for循环

键和值可以为任何名称(变量):k,v

键和值的名称可以根据实际情况来命名,这样容易理解

items() 函数以列表返回可遍历的(键, 值) 元组。

将字典中的键值对以元组存储,并将众多元组存在列表中。

可以用list 函数将items 返回的可迭代序列转化为列表

list_1 = user_0.items()
list(list_1)

结果:

Out[2]: [('username', 'efermi'), ('first', 'enrico'), ('last', 'fermi')]

返回值:[(‘username’, ‘efermi’), (‘first’, ‘enrico’), (‘last’, ‘fermi’)]

for key,value in user_0.items():print("\nKey: " + key)print("Value: " + value)

结果:

Key: username
Value: efermiKey: first
Value: enricoKey: last
Value: fermi

或者

for k,v in user_0.items():print("\nKey: " + key)print("Value: " + value)

结果:


Key: last
Value: fermiKey: last
Value: fermiKey: last
Value: fermi

注意:键-值对的返回顺序可能与存储顺序不同,因为python不关心键-值对的存储顺序,

而只跟踪键和值之间的关联关系

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}

键和值的名称可以根据实际情况来命名,这样容易理解

即键和值用描述性语句容易让人理解for循环中在作什么操作

for name,language in favorite_languages.items():print(name.title() + "'s favorite languages is " +language.title() + ".")

结果:

Jen's favorite languages is Python.
Sarah's favorite languages is C.
Edwaid's favorite languages is Ruby.
Phil's favorite languages is Python.

2.3.2 变量字典中的键 方法keys()

keys函数是Python的字典函数,它返回字典中的所有键所组成的一个可迭代序列。

使用keys()可以获得字典中所有的键。

使用list()函数可将keys()函数返回的可迭代序列转化为列表

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}
for name in favorite_languages.keys():print(name.title())# 这四行代码等价
for name in favorite_languages:print(name.title())

结果:

Jen
Sarah
Edwaid
Phil

原因:遍历字典时,会默认遍历所有的键

方式keys()是显示的遍历键

将字典中的键存储到一个names列表中

names = []
names_1 = list(favorite_languages.keys())
for name in favorite_languages:t_names = namenames.append(t_names)print(name.title())
print(names)
print(names_1)

结果:

Jen
Sarah
Edwaid
Phil
['jen', 'sarah', 'edwaid', 'phil']
['jen', 'sarah', 'edwaid', 'phil']

使用键遍历的例子:使用当前的键来访问与之相关联的值

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}friends = ['phil','sarah']
for name in favorite_languages.keys():print(name.title())if name in friends:print(" Hi " + name.title() +", I see your favorite language is " + favorite_languages[name].title() + "!")

结果:

Jen
SarahHi Sarah, I see your favorite language is C!
Edwaid
PhilHi Phil, I see your favorite language is Python!

使用keys()确定某个人是否接受了调查

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}if 'erin' not in favorite_languages.keys():print("Erin,please take our poll!")

结果:

Erin,please take our poll!

2.3.3 按顺序遍历字典中的所有键sorted函数

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}
for name in sorted(favorite_languages.keys()):print(name.title() + ", thank you for taking the poll.")

结果:

Edwaid, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.

2.3.4 遍历字典中的所有值方法values()

values()返回值:它返回字典中的所有值所组成的一个可迭代序列。

使用list可以去掉dict_value前缀,并转为列表

favorite_languages = {'jen':'python','sarah':'c','edwaid':'ruby','phil':'python',}
print("The following languages have been mentioned: ")
for language in favorite_languages.values():print(language.title())

结果:

The following languages have been mentioned:
Python
C
Ruby
Python

值去重,可考虑集和

print("The following languages have been mentioned: ")
for language in set(favorite_languages.values()):print(language)list_languages = list(favorite_languages.values())
print(type(list_languages))
print(list_languages)

结果:

The following languages have been mentioned:
python
ruby
c
<class 'list'>
['python', 'c', 'ruby', 'python']
python,c,ruby,python

另一种遍历值的方法

value = favorite_languages.values()
print(",".join(i for i in value))

结果:

python,c,ruby,python

2-4 嵌套

定义:将一系列字典存储在列表中,或将列表作为值存储在字典中,称为嵌套

2-4-1 字典列表 将字典存到列表中

4、存储字典的列表

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}

外星人有代码自动生成

创建一个用于存储外星人的空列表

aliens = []

创建30个绿色的外星人

for  alien_number in range(30):new_alien = {'color':'green','points':5,'speed':'slow'}aliens.append(new_alien)# 显示前5个外星人
for alien in aliens[:5]:print(alien)
print(".......")

结果:

{'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'}
.......

显示创建了多个外星人

print("\nTotal number of aliens: " + str(len(aliens)))

结果:

Total number of aliens: 30

外星人都有相同特征,python中每个外星人都是独立的,所以我们可以对每个外星进行修改

修改前3个外星人特征

创建一个用于存储外星人的空列表

aliens = []

创建30个绿色的外星人

for  alien_number in range(30):new_alien = {'color':'green','points':5,'speed':'slow'}aliens.append(new_alien)for alien in aliens[:3]:if alien['color'] == 'green':alien['color'] = 'yellow'alien['speed'] = 'medium'alien['points'] = 10

显示前5个外星人

for alien in aliens[:5]:print(alien)
print(".......")

结果:

{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
.......

进一步扩展

创建一个用于存储外星人的空列表aliens = []

aliens = []

创建30个绿色的外星人

for  alien_number in range(30):new_alien = {'color':'green','points':5,'speed':'slow'}aliens.append(new_alien)for alien in aliens[: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

显示前5个外星人

for alien in aliens[:10]:print(alien)
print(".......")

结果:

{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'color': 'yellow', 'points': 10, 'speed': 'medium'}
{'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'}
.......

应用领域:在网站中位每一个用户创建一个字典,并将字典存储到列表中

(每个字典的结构相同)

遍历列表处理数据

2.4.2 在字典中存储列表 即字典中放列表

5、存储列表的字典

存储所点比萨的信息

pizza = {'crust':'thick','toppings':['mushrooms','extra cheese'],}

概述所点的比萨

print("You ordered a " + pizza['crust'] + "-crust pizza " +"With the following toppings: ")for topping in pizza['toppings']:print('\t' +  topping)

结果:

You ordered a thick-crust pizza With the following toppings: mushroomsextra cheese

一个键关联多个值

favorite_languages = {'jen':['python','ruby'],'sarah':['c'],'edwaid':['ruby','go'],'phil':['python','haskell'],}for name,languages in favorite_languages.items():if len(languages) == 1:print("\n" + name.title() + "'s favorite language is " + languages[0].title()) #  注意只有一个元素在列表中时,要用下标0来获取最后一个元素else:print("\n" + name.title() + "'s favorite languages are: ")for language in languages:print("\t" + language.title())

结果:


Jen's favorite languages are: PythonRubySarah's favorite language is CEdwaid's favorite languages are: RubyGoPhil's favorite languages are: PythonHaskell

注意:列表和字典的嵌套层级不应该太多

太多的话,应该考虑有更简单的方法

6-4-3 在字典中存储字典

6、存储字典的字典

users = {'aeinstein':{'first':'albert','last':'einstein','location':'princeton',},'mcurie':{'first':"marie",'last':'curie','location':'paris',},}for username,user_info in users.items():print("\nUsername: " + username)full_name = user_info['first'] + " " + user_info['last']location =  user_info['location']print("\tFull name: " + full_name.title())print("\tLocation: " + location.title())

结果:

Username: aeinsteinFull name: Albert EinsteinLocation: PrincetonUsername: mcurieFull name: Marie CurieLocation: Paris

总结:
1、字典的遍历方法:items()方法:键-值对遍历,返回的值是一个可以迭代序列,list()函数可以将其转为列表
keys()方法:键遍历,返回的值是一个可以迭代序列,list()函数可以将其转为列表
values()方法:值变量,返回值是一个可以迭代序列,list()函数可以将其转为列表
2、嵌套: 在列表中放字典,用于相同属性的对象
在字典中放列表,用于具有相同键的对象
在字典中放置地,用于复制对象
3、在Python对于可迭代的内置数据类型tuple,字符串若放在一个可迭代对象里面,最后一个字符串将以一个个字符变量,因为单个字符串也是可以迭代对象
例子:

tuple_2 = ('你好!')
for ele in list_2:print(ele)

结果:

你
好
!

Python基础操作_字典的遍历相关推荐

  1. Python基础学习之字典操作

    Python基础学习之字典操作 文章目录 Python基础学习之字典操作 1. 字典的创建 1.1 直接赋值法 1.2 关键字赋值法 1.3 列表转化法 1.4 元素增加法 1.5 元组转化法 1.6 ...

  2. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

  3. python基础操作笔记

    python基础操作笔记 第二章 变量和简单的数据类型 #2.1输出数据hello world print('--------------------------------------------- ...

  4. Python基础day04【字典(介绍、定义与访问、操作数据、常见操作)】

    视频.源码.课件.软件.笔记:超全面Python基础入门教程[十天课程]博客笔记汇总表[黑马程序员]    目录 1. 复习反馈 判断一个方法是否有返回值 列表中的删除操作 新建day04项目 2. ...

  5. python基础模型_零基础python代码策略模型实战

    内容摘要 1 本文概述 本文主要介绍了python基础.爬虫.与数据库交互.调用机器学习.深度学习.NLP等.分别介绍了各个模块的安装,环境的搭建等.并且以机器学习选股为例,把各个模块连贯起来,核心代 ...

  6. Python基础教程:字典(当索引不好用时)

    一.定义与概念 1.字典是针对非序列集合而提供的一种数据类型 举例:检索学生信息. "<键><值>对". 键(即身份证号码) 值(即学生信息). " ...

  7. 【python基础】用字典做一个小型的查询数据库

    例子来源于<python基础教程>第三版,57p 该例子主要是使用字典的方式,实现一个小型的数据库,通过查询字典的键值来获取用户的信息. 本人修改了部分代码. #!/usr/bin/pyt ...

  8. python基础学习_转行零基础该如何学习python?很庆幸,三年前的我选对了

    这似乎是一个如荼如火的行业,对于一直在思考着转行的我,提供了一个不错的方向. 这个行业当然就是python程序员,真正开始决定转行是在24岁的时候,到现在已经有三年多了,我从零开始,每天用业余两个小时 ...

  9. 风变python基础语法_风变编程python (基础语法爬虫精进)

    温馨提示:本信息由[会员:crm010com]搜集整理发布,版权归原作者及发布者所有,您如有异议请 举报 或者 版权申诉. 风变编程python (基础语法爬虫精进) 第1章介绍在计算机中安装Pyth ...

最新文章

  1. LeetCode 15. 3Sum--Java,Python解法
  2. TP3.2.3 页面跳转后 Cookie 失效 —— 参考解决方案
  3. c mysql批量插入优化_MySQL实现批量插入以优化性能的教程
  4. mysql 索引分析工具_Mysql:性能分析以及Explain工具的使用
  5. java基础(一):谈谈java内存管理与垃圾回收机制
  6. 从无盘启动看 Linux 启动原理
  7. 怎么圆角变直角_衣柜设计个圆角有什么用?效果好看又实用,会这样装的都是老木工...
  8. 2018.08.16 洛谷P2029 跳舞(线性dp)
  9. MySql基本的操作
  10. APICloud发布低代码开发平台
  11. 四川大学转专业计算机条件,四川大学转专业需要什么条件
  12. linux 中xls格式的文件,如何在命令行中将XLS文件转换为CSV [Linux] | MOS86
  13. 计算几何(中线长计算三角形面积) - Medians - UVA 10347
  14. ListView实现物流追踪
  15. vivo手机html有吗,vivo手机有哪些系列?区别是什么?
  16. GreenPlum系列-5-角色和权限
  17. 互融云贷款中介平台搭建,助力企业实现数字化智能办公
  18. 《网络攻防》第七周学习总结
  19. Chaos Emulator核心功能开发历程
  20. 03 线型动态规划——LIS模型

热门文章

  1. Windows安装VirtualBox教程(图文版)
  2. js 获取开始时间和结束时间相隔小时及分钟(时间戳操作)
  3. php取word表格一行内容,如何提取出word表格中的内容 值得一看
  4. JSM之ActivityMQ
  5. 共享网络打印机无法连接计算机,共享打印机连不上的解决方法-电脑自学网
  6. Hadoop实战-MR倒排索引(三)
  7. 离线安装MySQL缺少libaio.so.1文件——并离线安装libaio.so.1
  8. 国产x86服务器芯片,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...
  9. 1036. 跟奥巴马一起编程(15)
  10. 50台计算机教室多少带宽够,电脑工作室,200m宽带有几十根都是可以五拨的,用软路由多拨上网...