Python编程笔记6字典
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字典相关推荐
- Python学习笔记:字典(dict)
Python学习笔记:字典(dict) 字典(dict)可能是最重要的Python内置数据结构,更常用的名称是哈希映射(hash map)或关联数组(associate array).它是键值对的集合 ...
- Python 常用线型 + 点符号 + 颜色汇总 ∈ Python 编程笔记
文章目录 Part.I 线型 Chap.I 基本线型 Chap.II 元组线型 Part.II 点符号 Chap.I 基本符号 Chap.II 高级符号 Part.III 颜色 Chap.I 单词或字 ...
- Python编程笔记
Table of Contents 1. 绪论 2. python编程概述 2.1. 知识点 2.2. 良好的编程习惯 2.3. 常见编程错误 2.4. 测试和调试提示 2.5. 移植性提示 3. 控 ...
- Python学习笔记之字典(一)
1.什么是字典:在Python中,字典是一系列键-值对.每个键都与一个值相关联,你可以使用键来访问与之相关联的值.与键相关联的值可以是数字.字符串.列表乃至字典.事实上,可将任何Python对象用作字 ...
- python学习笔记(字典)
字典的使用 现实中的字段及在python中的字段都进行了构建,从而可以轻松查到某个特定的词语(键),从而找到它的意义(值). 某些情况下,字典比列表更加适用: # 表征游戏棋盘的状态,每个键都是由坐标 ...
- Python学习笔记之字典(三)
嵌套:有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套.你可以在列表中嵌套字典.在字典中嵌套列表甚至在字典中嵌套字典. 1.字典列表,一个列表里面包含多个字典,即列表中嵌套 ...
- Python学习笔记之字典(二)
遍历字典:一个Python字典可能包含很多个键值对,在需要获取其数据时,就需要对这个进行遍历,Python支持对字典遍历.字典可用于以各种方式存储信息,其中有多种遍历字典的方式:可遍历字典的所有键值对 ...
- python编程遍历_Python字典遍历操作实例小结
本文实例讲述了Python字典遍历操作.分享给大家供大家参考,具体如下: 1 遍历键值对 可以使用一个 for 循环以及方法 items() 来遍历这个字典的键值对. dict = {'evapora ...
- 《Python学习笔记》——南溪的python编程笔记
1 致谢 感谢张轩老师分享的关于函数式编程的博文! 1 前言 Python中使用函数式编程也是很重要的: 2 函数 (对于函数编写的原则,我们参考了网易云音乐大前端团队的博文网易云音乐大前端团队--& ...
最新文章
- 知识体系(不断更新)
- Matlab标识指令中字符的精细控制
- 成功解决AttributeError: ‘dict_values‘ object has no attribute ‘index‘
- 阿里宣布成立云原生技术委员会,释放哪些趋势信息?
- 在Activity不可见时暂停WebView的语音播放,可见时继续播放之前的语音
- image是否有disabled属性_Vue学习笔记 模板语法、计算属性
- jsp中9个隐藏对象
- Node.js:npm下载很慢,设置国内淘宝镜像
- Vue —— 移动端添加 fastclick
- 常用的即时通讯软件有哪些
- 05.抽象队列同步器AQS应用之Lock详解
- 如何在远程计算机上播放音乐,如何用iPhone远程遥控电脑播放音乐教程
- Mybatis数据持久化
- 客户贷后还款提醒优化项目
- 20220518编译OpenHarmony-v3.1-Release出现genext2fs: command not found
- 荣耀7c升鸿蒙,荣耀也能升级!鸿蒙所需配置曝光:麒麟710起步
- ArcGIS合并shp文件及单个shp文件中的相邻斑块
- IMAU 软件项目管理 期末复习总结 第七章
- java abstrict class,java - implements Closeable或实现AutoCloseab
- python中datetime模块是以什么时间为基础_Python基础之datetime模块