Python学习(五)字典
字典
1.一个简单的字典
现在想存储一个人的基本信息,比如姓名,年龄等信息,应该怎样存储呢?下面是一个简单的字典,存储了一个人的相关信息。
people_0 = {"name": "dana", "age": "18"}
print (people_0["name"])
print (people_0["age"])
结果
dana
18
2.使用字典
在Python中,字典是一系列的键值对。每个键都有一个值相关联,可以使用键来访问与之相关联的值。与键关联的值可以是数字,字符串,列表乃至是字典。可将任何Python对象用作字典中的值。
在Python中,字典用花括号{}中的一系列键值对表示,
键值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,键值对之间用逗号分隔。在字典中,想要存储多少个键值都可以。
2.1访问字典中的值
要获取与键相关联的值,可依次指定字典名和放在方括号之内的键。
people_0 = {"name": "dana", "age": "18"}
print (people_0["name"])
结果
dana
这将返回字典people_0中与键"name"相关联的值。
2.2 添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名,用方括号括起来的键和相关联的值。
people_0 = {"name": "dana", "age": "18"}
people_0["gender"] = "female"
people_0["hobby"] = "music"
print (people_0)
结果
{'gender': 'female', 'age': '18', 'name': 'dana', 'hobby': 'music'}
Pyhton不关心键值对的添加顺序,只关心键和值之间的关联关系。
如果添加字典时重复添加一个key,或者在定义的时候就有一个重复的key会是什么情况
people_0 = {"name": "dana", "age": "18", "gender": "female","name":"david"}
for value in people_0.values():print (value)
结果
female
18
aaa
Python会覆盖掉相同的键的值。所以,在字典中,键永远都不会重复。
2.3 定义一个空字典
在空字典中添加键值对有时候是为了方便,有时候必须这样做。为此,可先使用一对空的花括号定义一个字典,再分别添加各个键值对。
people_0 = {}
people_0["gender"] = "female"
people_0["hobby"] = "music"
结果
{'gender': 'female', 'hobby': 'music'}
先定义一个字典,在程序运行期间动态的添加数据是很常见的事情。
2.4 修改字典中的值
要修改字典中的值,可依次指定字典名,用方括号括起的键以及该键相关联的新值。
people_0 = {"name": "dana", "age": "18"}
people_0["age"] = 20
print (people_0)
结果
{'age': 20, 'name': 'dana'}
可以看到,在修改键对应的值的时候,也可以直接修改值的类型。代码中就把字符串类型的"18",修改为了int类型的20。
2.5 删除键值对
对于字典中不再需要的信息,可使用del语句将相应的键值对彻底删除。使用del语句时,必须指定字典名和要删除的键。
people_0 = {"name": "dana", "age": "18"}
del people_0["age"]
print (people_0)
结果
{'name': 'dana'}
删除的键值对将永远的消失。
3.遍历字典
一个Python字典可能只包含几个键值对,也可能包含数百万个键值对。鉴于字典可能包含大量的数据,Python支持对字典的遍历。字典可用于以各种方式存储信息,因此有多种遍历字典的方式,可遍历字典的所有键值对,键或值。
3.1 遍历所有的键值对
people_0 = {"name": "dana", "age": "18", "gender": "female"}
for key, value in people_0.items():print ("\nkey : " + key)print ("value : " + value)
结果
key : gender
value : femalekey : age
value : 18key : name
value : dana
要编写用于遍历字典的for循环,可声明两个变量,用于存储键值对中的键和值。对于这两个变量,可使用任何名称。
for k, v in people_0.items():
for语句包含字典名和方法名items(),它返回一个键值对列表。接下来,for循环依次将每个键值对存储到指定的两个变量中。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
key_value_list = people_0.items()
for key, value in key_value_list:print ("\nkey : " + key)print ("value : " + value)
结果和上面代码一样。
值得注意的一点是,即便是遍历字典时,键值对的返回顺序也与存储的顺序不同。Python不关心键值对的存储顺序,而只跟踪键和值之间的关联关系。
3.2 遍历字典中的所有键
在不需要使用字典中的值时,调用keys()方法。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
for key in people_0.keys():print ("\nkey : " + key)
结果
key : genderkey : agekey : name
Python提取字典people_0中的所有键,并依次将它们存储到变量key中,并进行输出。
同时,可以用获取到的键直接访问字典中的值。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
for key in people_0.keys():if key == "name":print (people_0[key])
结果
dana
方法keys()和items()相似,实际上它返回一个列表,其中包含字典中的所有键。
3.3 按顺序遍历字典中的所有键
字典明确的记录键和值之间的关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常想要的只是获取与键相关联的正确的值。
要以特定的顺序返回元素,办法是早for循环中对返回的键进行排序。可以使用函数sorted()来获取按特定顺序排列的键列表的副本。
函数sorted()在Python学习(二)列表简介进行过使用。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
key_list = people_0.keys()
for key in sorted(key_list):print (key)
结果
age
gender
name
对方法people_0.keys()的结果调用了函数sorted()。这让Python列出字典中所有键,并在遍历前对这个列表进行排序。
3.4 遍历字典中的所有值
想要获取字典中的所有的值,可使用方法values(),它返回一个值列表,而不包含任何键。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
for value in people_0.values():print (value)
结果
female
18
dana
这样就提取了字典的所有值,但是没有考虑到值是否重复。涉及到值很少时,这也许不是问题,但如果值很多,最终的列表就有可能包含大量的重复值。为了剔除重复项,可使用集合set。集合类似于列表,但每个元素都必须是独一无二的。
people_0 = {"name": "dana", "age": "18", "gender": "female", "stage_name": "dana"}
for value in set(people_0.values()):print (value)
结果
18
female
dana
通过对包含重复元素的列表调用set(),可让Python找出列表中独一无二的元素,并使用这些元素创建一个新的集合。
4.嵌套
有时候,需要将一系列字典存储到列表中,或者将列表作为值存储到字典中,这称为嵌套。可以在列表中嵌套字典,在字典中嵌套列表甚至在字典中嵌套字典。
4.1字典列表
people_0 = {"name": "dana", "age": "18", "gender": "female"}
people_1 = {"name": "david", "age": "20", "gender": "male"}
people_2 = {"name": "bill", "age": "10", "gender": "male"}
peoples = [people_0, people_1, people_2]
for people in peoples:for key, value in people.items():print ("key:" + key + "\tvalue:" + value)print ("\n")
结果
key:gender value:female
key:age value:18
key:name value:danakey:gender value:male
key:age value:20
key:name value:davidkey:gender value:male
key:age value:10
key:name value:bill
首先定义了三个字典,把这三个字典放入到peoples列表中。循环peoples列表,变量为people,
people其实指代的就是循环到的字典。people.items()返回的就是包含键值对的列表,又进行了for循环。打印每一个键值对。
在代码中经常需要在列表中包含大量的字典,而其中每个字典都包含特定对象的众多信息。
4.2 在字典中存储列表
有时候需要将列表存储早字典中,而不是将字典存储在列表中。
fruits = ["apple", "banana", "pear"]
balls = ["basketball", "football", "volleyball"]
computers = ["apple", "lenovo", "dell"]
map = {}
map["fruits"] = fruits
map["balls"] = balls
map["computers"] = computers
print (map)
结果
{'computers': ['apple', 'lenovo', 'dell'], 'balls': ['basketball', 'football', 'volleyball'], 'fruits': ['apple', 'banana', 'pear']}
注意,列表和字典的嵌套层级不应该太多。如果嵌套的层级比示例多的多,很可能有更简单的解决问题的方案。
4.3 在字典中存储字典
字典中嵌套字典,这样做的时候,会让代码很快的复杂起来。
people_0 = {"name": "dana", "age": "18", "gender": "female"}
people_1 = {"name": "david", "age": "20", "gender": "male"}
people_2 = {"name": "bill", "age": "10", "gender": "male"}
peoples = {}
peoples["dana"] = people_0
peoples["david"] = people_1
peoples["bill"] = people_2
print (peoples)
print (peoples["dana"])
结果
{'bill': {'gender': 'male', 'age': '10', 'name': 'bill'}, 'dana': {'gender': 'female', 'age': '18', 'name': 'dana'}, 'david': {'gender': 'male', 'age': '20', 'name': 'david'}}
{'gender': 'female', 'age': '18', 'name': 'dana'}
请注意,表示每位用户的字典结构都相同,虽然Python并没有这样的要求,但这使得嵌套的字典处理起来更容易。倘若表示每位用户的字典都包含不同的键,for循环内部的代码将更复杂。
Python学习(五)字典相关推荐
- Python学习.第六天.字典
Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...
- SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理
SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...
- Python学习:字典(dictionary)
Python学习:字典(dictionary) 异常处理小技巧 异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个 ...
- Python+大数据-Python学习(五)
Python+大数据-Python学习(五) 1.函数的基本使用 函数是一个被命名的.独立的.完成特定功能的代码段,其可能给调用它的程序一个返回值.被命名的:在Python中,大部分函数都是有名函数 ...
- python学习(字典、用户输入和while循环)
前言:上次学习到了if语句,这次接着进行学习. 字典 字典能够准确地为各种真实物体建模,且能够将相关信息关联起来. 使用字典 字典是一系列的键--值对,一个建对应一个值,值可以为数字.字符串等 在Py ...
- Python学习6 字典基础知识和常用函数
字典概念 字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 ...
- python学习—伍—字典
目录 零.字典基础 简单字典举例 字典是什么 访问字典中的值 添加键值对 创建空字典 修改字典中的值 删除键值对 由类似对象组成的字典 使用 get() 来访问值 壹.遍历字典 遍历所有键值对 遍历字 ...
- python学习04——字典
文章目录 1. 字典的创建 2. 字典的元素查找 2.1 使用`[]` 2.2 使用`get()`函数 3. 字典的增删改操作 3.1 判断元素 3.2 增加元素 3.3 删除元素 3.3.1 删除某 ...
- Python 学习笔记 - 字典
1.使用字典 字典 是一系列键-值对. * 每个键都与一个值相关联,你可以使用键来访问与之相关联的值. * 与键相关联的值可以是数字.字符串.列表乃至字典. * 事实上,可将任何Python对象用做字 ...
最新文章
- 【imx6】Unable to find the ncurses libraries的解决办法
- 五十六、教用Python中的turtle海龟画图(上篇)
- Spring Boot是什么
- UVa 11346 - Probability
- sudo: Cannot execute /usr/local/bin/zsh: No such file or directory 问题
- ECCV 2020 论文大盘点-实例分割篇
- OPNET网络仿真分析-1.1.3、OPNET Modeler
- 通过Keepalived实现Redis Failover自动故障切换
- PYQT窗口可视化编程
- 梦幻西游这么火, Python也不甘示弱, Python写游戏辅助软件!
- 北京五大不可不去的隐秘餐厅
- ddos源码 ntp_DDOS攻击之NTP放大攻击
- matlab 0106,matlab中的plotyy
- Android 天气APP(十九)更换新版API接口(更高、更快、更强)
- 模拟人生畅玩版android,模拟人生畅玩版
- 作为程序员,每天交清晰的工作日报,不允许含糊和不详细,大家怎么看?
- PE结构-空白区手动添加任意代码(附实例代码)
- vue笔记:父子传值奥利给!
- WiCloud 商业Wi-Fi管理平台
- 【videojs】videojs自定义全屏按钮 | videojs全屏移动端弊端 | 创建videojs菜单