Python编程学习笔记,第6记:数据结构之字典

          本节将学习:能够将相关信息关联起来的Python字典。如何定义字典、如何使用存储在字典中的信息、如何访问和修改字典中的元素、如何遍历字典中的所有信息、如何遍历字典中的所有键-值对和所有的键以及所有的值、如何在列表中嵌套字典、如何在字典中嵌套列表、如何在字典中嵌套字典……

目录

Python编程学习笔记,第6记:字典

# 1.一个简单的字典

# 2.使用字典

# 2.1访问字典中的值

# 2.2添加键-值对

# 2.3修改字典中的值

# 2.4删除键-值对

# 2.5合并字典

# 2.6删除字典中的所有值

# 3.遍历字典

# 3.1遍历所有的键值对

# 3.2遍历字典中所有的键

# 3.3使用values()方法遍历字典中所有的值

# 集合set()

# 3.4使用copy()将字典复制到另外一个新字典中.

# 4嵌套

# 4.1字典列表:将字典存储在列表里.

# 4.2将列表存储在字典里.

# 4.3在字典中存储字典.


# 1.一个简单的字典

# 一个简单的字典
alien_0 = {'color': 'green', 'point': '5'}
print(alien_0['color'])
print(alien_0['point'])
# 用大括号{}将一系列以逗号隔开的键值对(key:value)包裹起来即可进行字典的创建.

输出结果为:

green
5

# 2.使用字典

  • # 在Python中,字典是一系列键-值对.每个键都与一个值相关联,可以使用键来访问与之相关联的值.
  • # 与键相关联的值可以是数字、字符串、列表、乃至字典.事实上,可以将任何Python对象用作字典中的值.
  • # 在Python中,字典用放在花括号{}中的一系列键-值对表示。
  • # 例如:alien_0 = {'color': 'green', 'point': '5'}
  • # 键-值对是两个相关联的值.指定键时,将返回与之相关联的值.键和值之间用冒号分隔,键-值对之间用逗号分隔.
  • # 最简单的字典是空字典,它不包含任何键-值对:
# 空字典
empty_dict = {}
print(empty_dict)

输出结果为:{}

# 2.1访问字典中的值

  • # 要获取与键相关联的值,可依次指定字典名和放在方括号内的键.
  • # 字典中可以包含任意数量的键-值对.
alien_0 = {'color': 'green', 'points': '5'}
new_points = alien_0['points']
print("You just earned " + str(new_points) + " points.")  # 回想下,此处str(new_points)的作用是什么?

输出结果为:You just earned 5 points.

# 2.2添加键-值对

  • # 字典是一种动态结构,可以随时向其中添加键-值对.
  • # 要添加键-值对,可依次指定字典名、用方括号{}括起来的键和相关联的值.
alien_1 = {'color': 'green', 'points': '5'}
print(alien_1)
# 添加键-值对
alien_1['x_position'] = 0
alien_1['y_position'] = 25
print(alien_1)

输出结果为:

{'color': 'green', 'points': '5'}
{'color': 'green', 'points': '5', 'x_position': 0, 'y_position': 25}

# 2.3修改字典中的值

  • # 要修改字典中的值,可依次指定字典名、用方括号括起来的键以及与该键相关联的新值.
    
alien_0 = {'color': 'green'}
print("The alien is " + alien_0['color'] + ".")
# 修改颜色
alien_0['color'] = 'yellow'
print("The alien now is " + alien_0['color'] + ".")

输出结果为:

The alien is green.
The alien now is yellow.

alien_0 = {'x_position': '0', 'y_position': 25, 'speed': 'medium'}
print("The original x-position: " + str(alien_0['x_position']))
# 向右移动alien
# 根据alien当前的速度决定将其移动多远.
if alien_0['speed'] == 'slow':x_increment = 1
elif alien_0['speed'] == 'medium':x_increment = 2
elif alien_0['speed'] == 'fast':x_increment = 3# 新位置等于老位置加上增量
alien_0['x_position'] = alien_0['x_position'] + str(x_increment)
print("New x-position:" + str(alien_0['x_position']))

输出结果为“

The original x-position: 0
New x-position: 02

# 2.4删除键-值对

  • # 对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除.
  • # 使用 del语句时,必须指定字典名和要删除的键.
# 对于字典中不再需要的信息,可使用del语句将相应的键-值对彻底删除.
# 使用 del语句时,必须指定字典名和要删除的键.
alien_1 = {'color': 'green', 'points': 5}
print(alien_1)
# 删除points
del alien_1['points']
print(alien_1)

输出结果为:

{'color': 'green', 'points': 5}
{'color': 'green'}

  • # 从输出结果中可以看出,删除的键-值对没有了.  注意:删除的键-值对永远消失了.
# 较长的字典
favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'java','selene': 'c#',
}
print("Sarah's favorite language is " + favorite_languages['sarah'].title() + ".")
# 当内容较长时,要在合适的地方拆分内容为多行.

输出结果为:Sarah's favorite language is C.

# 2.5合并字典

  • # 有时候,需要将内容类似的字典合并.
  • # 可使用update()合并字典,将一个字典中的键值对复制到另外一个字典中去.
# 有时候,需要将内容类似的字典合并.
# 可使用update()合并字典,将一个字典中的键值对复制到另外一个字典中去.
programming_languages = {'jen': 'python','sarah': 'c','edward': 'ruby',
}
print(programming_languages)
favorite_languages = {'phil': 'java','selene': 'c#','jus': 'PHP',
}
print(favorite_languages)
# 使用update()合并字典
programming_languages.update(favorite_languages)
print(programming_languages)

输出结果为:

{'jen': 'python', 'sarah': 'c', 'edward': 'ruby'}
{'phil': 'java', 'selene': 'c#', 'jus': 'PHP'}
{'jen': 'python', 'sarah': 'c', 'edward': 'ruby', 'phil': 'java', 'selene': 'c#', 'jus': 'PHP'}

# 2.6删除字典中的所有值

  • # 使用clear(),或者给字典变量重新赋值一个空字典({})可以将字典中的所有元素删除.
  • # 使用clear(),删除字典中的所有元素.
# 2.6删除字典中的所有值
# 使用clear(),或者给字典变量重新赋值一个空字典({})可以将字典中的所有元素删除.
favorite_languages = {'phil': 'java','selene': 'c#','jus': 'PHP',
}
print(favorite_languages)
# 使用clear()删除字典中的所有元素.
favorite_languages.clear()
print(favorite_languages)

输出结果为:

{'phil': 'java', 'selene': 'c#', 'jus': 'PHP'}
{}

  • # 给字典变量重新赋值一个空字典{},可删除字典中所有的元素.
programming_languages = {'jen': 'python','sarah': 'c','edward': 'ruby',
}
print(programming_languages)
# 给字典变量重新赋值一个空字典({})可以将字典中的所有元素删除.
programming_languages = {}
print(programming_languages)

输出结果为:

{'jen': 'python', 'sarah': 'c', 'edward': 'ruby'}
{}

# 3.遍历字典

  • # 字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典所有的键值对、键或值.

# 3.1遍历所有的键值对

# 字典可用于以各种方式存储信息,因此有多种遍历字典的方式:可遍历字典所有的键值对、键或值.
# 3.1遍历所有的键值对
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',
}
# 用for循环+items()方法遍历字典中的所有键值对
for key, value in user_0.items():print("\nkey: " + key)print("value: " + value)

输出结果为:
key: username
value: efermi

key: first
value: enrico

key: last
value: fermi

  • # 要编写用于遍历字典的for循环,要声明两个变量,用于存储键值对的键和值.
favorite_languages = {'phil': 'java','selene': 'c#','jus': 'PHP',
}
for name, language in favorite_languages.items():print(name.title() + "'s favorite language is " + language.title() + ".")

输出结果为:

Phil's favorite language is Java.
Selene's favorite language is C#.
Jus's favorite language is Php.

# 3.2遍历字典中所有的键

  • # 在不需要使用字典中的值,只需要使用字典中的键时,可使用方法keys().
# 3.2遍历字典中所有的键
# 在不需要使用字典中的值,只需要使用字典中的键时,可使用方法keys().
favorite_languages = {'phil': 'java','selene': 'c#','jus': 'PHP',
}
for name in favorite_languages.keys():print(name.title())

输出结果为:

Phil
Selene
Jus

  • # 遍历字典时,会默认遍历所有的键.但是显示地使用方法keys()让代码更容易理解.
favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'java','selene': 'c#',
}
friends = ['phil', 'selene']
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())

输出结果为:

Phil
 Hi Phil, I see your favorite language is Java
Selene
 Hi Selene, I see your favorite language is C#

  • # 方法keys()并非只能用于遍历;实际上,它返回一个列表,其中包含字典中所有的键.
favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','selene': 'c#',
}
person_name = 'erin'
if person_name not in favorite_languages.keys():print(person_name.title() + ", please take our poll.")

输出结果为:Erin, please take our poll.

# 3.3使用values()方法遍历字典中所有的值

# 3.3使用values()方法遍历字典中所有的值
# 如果只需要使用字典中的值,而不需要字典中的键,可使用方法values(),它返回一个值列表,而不包含任何键.
favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','selene': 'c#','oli': '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
C#
Python

# 这种方法提取了字典中所有的值,但是没有考虑是否有重复.
# 为剔除重复项,可使用集合(set).集合类似于列表,但每个元素都不允许重复,每个元素都必须是独一无二.

# 集合set()

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','selene': 'c#','oli': 'python',
}
print("The following languages have been mentioned: ")
for language in favorite_languages.values():print(language.title())
# 这种方法提取了字典中所有的值,但是没有考虑是否有重复.
# 为剔除重复项,可使用集合(set).集合类似于列表,但每个元素都不允许重复,每个元素都必须是独一无二.
print("The following languages have been mentioned: ")
for language in set(favorite_languages.values()):print(language.title())
# 通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合.

输出结果为:

The following languages have been mentioned:
Python
C
Ruby
C#
Python
The following languages have been mentioned:
Python
C#
C
Ruby

  •  # 通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素来创建一个集合.

# 3.4使用copy()将字典复制到另外一个新字典中.

# 3.4使用copy()将字典复制到另外一个新字典中.
favorite_languages = {'jen': 'python','sarah': 'c','phil': 'java','selene': 'c',
}
print(favorite_languages)
# 使用copy()将字典复制到另外一个新字典中.
original_languages = favorite_languages.copy()
favorite_languages['phil'] = 'python'
print("The new dict: ")
print(favorite_languages)
print("The original dict: ")
print(original_languages)

输出结果为:

{'jen': 'python', 'sarah': 'c', 'phil': 'java', 'selene': 'c'}
The new dict:
{'jen': 'python', 'sarah': 'c', 'phil': 'python', 'selene': 'c'}
The original dict:
{'jen': 'python', 'sarah': 'c', 'phil': 'java', 'selene': 'c'}

# 4嵌套

# 有时候,需要将一系列字典存储在列表中,或将一系列列表存储在字典中,这种称为嵌套.

# 4.1字典列表:将字典存储在列表里.

# 4.1字典列表:将字典存储在列表里.
alien_0 = {'color': 'red', 'points': 15}
alien_1 = {'color': 'green', 'points': 5}
alien_2 = {'color': 'yellow', 'points': 10}aliens = [alien_0, alien_1, alien_2]for alien in aliens:print(alien)

输出结果为:

{'color': 'red', 'points': 15}
{'color': 'green', 'points': 5}
{'color': 'yellow', 'points': 10}

# 创建一个空列表
aliens = []
# 创建6个绿色alien
for alien in range(6):new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}aliens.append(new_alien)
# 显示前3个alien
for alien in aliens[:3]:print(alien)
print("......")

输出结果为:

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

# 创建一个空列表
aliens = []
# 创建6个红色alien
for alien in range(6):new_alien = {'color': 'red', 'points': 10, 'speed': 'fast'}aliens.append(new_alien)print(new_alien)
print("........................")
# 修改中间2个alien为黄色
for alien in aliens[2:4]:  # 切片,与range()函数一样,Python在到达指定的第二个索引前面的元素后停止,即不包含第二个索引元素.if alien['color'] == 'red':alien['color'] = 'yellow'alien['points'] = 5alien['speed'] = 'medium'
# 显示前5个alien
for alien in aliens[0:5]:print(alien)
print("......")

输出结果为:

{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
........................
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'yellow', 'points': 5, 'speed': 'medium'}
{'color': 'yellow', 'points': 5, 'speed': 'medium'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
........................

# 4.2将列表存储在字典里.

  • # 每当需要在字典中将一个键关联到多个值时,就可以在字典中嵌套一个列表.
# 4.2将列表存储在字典里.
# 每当需要在字典中将一个键关联到多个值时,就可以在字典中嵌套一个列表.
# 存储所点比萨的信息
pizza = {'crust': 'thick','toppings': ['mushroom', '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.
    mushroom
    extra cheese

  • # 注意:列表和字典的嵌套层级不宜太多.如果嵌套层级太多,很可能有更简单的解决问题的方案.

# 4.3在字典中存储字典.

  • # 可以在字典中嵌套字典,但是这样做时,代码可能很快就复杂起来了.
# 4.3在字典中存储字典.
# 可以在字典中嵌套字典,但这样做,代码可能很快就变得复杂起来了.
users = {'aeinsten': {'first': 'albert','last': 'einstein','location': 'princeton'},'mcruie': {'first': 'marie','last': 'curie','location': 'paris'},}
for username, user_infor in users.items():print("\nUsername: " + username)full_name = user_infor['first'] + " " + user_infor['last']location = user_infor['location']print("Full name: " + full_name)print("\tLocation: " + location.title())

输出结果为:

Username: aeinsten
Full name: albert einstein
    Location: Princeton

Username: mcruie
Full name: marie curie
    Location: Paris

  • 绳锯木断,水滴石穿。

Python编程笔记6字典相关推荐

  1. Python学习笔记:字典(dict)

    Python学习笔记:字典(dict) 字典(dict)可能是最重要的Python内置数据结构,更常用的名称是哈希映射(hash map)或关联数组(associate array).它是键值对的集合 ...

  2. Python 常用线型 + 点符号 + 颜色汇总 ∈ Python 编程笔记

    文章目录 Part.I 线型 Chap.I 基本线型 Chap.II 元组线型 Part.II 点符号 Chap.I 基本符号 Chap.II 高级符号 Part.III 颜色 Chap.I 单词或字 ...

  3. Python编程笔记

    Table of Contents 1. 绪论 2. python编程概述 2.1. 知识点 2.2. 良好的编程习惯 2.3. 常见编程错误 2.4. 测试和调试提示 2.5. 移植性提示 3. 控 ...

  4. Python学习笔记之字典(一)

    1.什么是字典:在Python中,字典是一系列键-值对.每个键都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将任何Python对象用作字 ...

  5. python学习笔记(字典)

    字典的使用 现实中的字段及在python中的字段都进行了构建,从而可以轻松查到某个特定的词语(键),从而找到它的意义(值). 某些情况下,字典比列表更加适用: # 表征游戏棋盘的状态,每个键都是由坐标 ...

  6. Python学习笔记之字典(三)

    嵌套:有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套.你可以在列表中嵌套字典.在字典中嵌套列表甚至在字典中嵌套字典. 1.字典列表,一个列表里面包含多个字典,即列表中嵌套 ...

  7. Python学习笔记之字典(二)

    遍历字典:一个Python字典可能包含很多个键值对,在需要获取其数据时,就需要对这个进行遍历,Python支持对字典遍历.字典可用于以各种方式存储信息,其中有多种遍历字典的方式:可遍历字典的所有键值对 ...

  8. python编程遍历_Python字典遍历操作实例小结

    本文实例讲述了Python字典遍历操作.分享给大家供大家参考,具体如下: 1 遍历键值对 可以使用一个 for 循环以及方法 items() 来遍历这个字典的键值对. dict = {'evapora ...

  9. 《Python学习笔记》——南溪的python编程笔记

    1 致谢 感谢张轩老师分享的关于函数式编程的博文! 1 前言 Python中使用函数式编程也是很重要的: 2 函数 (对于函数编写的原则,我们参考了网易云音乐大前端团队的博文网易云音乐大前端团队--& ...

最新文章

  1. 知识体系(不断更新)
  2. Matlab标识指令中字符的精细控制
  3. 成功解决AttributeError: ‘dict_values‘ object has no attribute ‘index‘
  4. 阿里宣布成立云原生技术委员会,释放哪些趋势信息?
  5. 在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音
  6. image是否有disabled属性_Vue学习笔记 模板语法、计算属性
  7. jsp中9个隐藏对象
  8. Node.js:npm下载很慢,设置国内淘宝镜像
  9. Vue —— 移动端添加 fastclick
  10. 常用的即时通讯软件有哪些
  11. 05.抽象队列同步器AQS应用之Lock详解
  12. 如何在远程计算机上播放音乐,如何用iPhone远程遥控电脑播放音乐教程
  13. Mybatis数据持久化
  14. 客户贷后还款提醒优化项目
  15. 20220518编译OpenHarmony-v3.1-Release出现genext2fs: command not found
  16. 荣耀7c升鸿蒙,荣耀也能升级!鸿蒙所需配置曝光:麒麟710起步
  17. ArcGIS合并shp文件及单个shp文件中的相邻斑块
  18. IMAU 软件项目管理 期末复习总结 第七章
  19. java abstrict class,java - implements Closeable或实现AutoCloseab
  20. python中datetime模块是以什么时间为基础_Python基础之datetime模块

热门文章

  1. VS Code中的Python入门
  2. 1分钟掌握和女生约会的聊天方式
  3. MacType - 美化 Windows 字体的神器!(让字体渲染显示效果比苹果电脑更清晰炫丽)
  4. Web网页调用本地摄像头、实时获取图片
  5. audio通知栏切换歌曲停止播放,怎么破
  6. Java split()方法中的特殊符号
  7. VUE+WebPack:开发一款太空版植物大战僵尸的前端页游
  8. 一致性Hash算法(JAVA版)(摘抄至五月的仓颉的博客)
  9. 用telnet命令发送邮件
  10. 华为机试——名字的漂亮度