字典

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学习(五)字典相关推荐

  1. Python学习.第六天.字典

    Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...

  2. SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理

    SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...

  3. Python学习:字典(dictionary)

    Python学习:字典(dictionary) 异常处理小技巧 异常 ​ 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个 ...

  4. Python+大数据-Python学习(五)

    Python+大数据-Python学习(五) 1.函数的基本使用 函数是一个被命名的.独立的.完成特定功能的代码段,其可能给调用它的程序一个返回值.被命名的:在Python中,大部分函数都是有名函数 ...

  5. python学习(字典、用户输入和while循环)

    前言:上次学习到了if语句,这次接着进行学习. 字典 字典能够准确地为各种真实物体建模,且能够将相关信息关联起来. 使用字典 字典是一系列的键--值对,一个建对应一个值,值可以为数字.字符串等 在Py ...

  6. Python学习6 字典基础知识和常用函数

    字典概念 字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 ...

  7. python学习—伍—字典

    目录 零.字典基础 简单字典举例 字典是什么 访问字典中的值 添加键值对 创建空字典 修改字典中的值 删除键值对 由类似对象组成的字典 使用 get() 来访问值 壹.遍历字典 遍历所有键值对 遍历字 ...

  8. python学习04——字典

    文章目录 1. 字典的创建 2. 字典的元素查找 2.1 使用`[]` 2.2 使用`get()`函数 3. 字典的增删改操作 3.1 判断元素 3.2 增加元素 3.3 删除元素 3.3.1 删除某 ...

  9. Python 学习笔记 - 字典

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

最新文章

  1. 【imx6】Unable to find the ncurses libraries的解决办法
  2. 五十六、教用Python中的turtle海龟画图(上篇)
  3. Spring Boot是什么
  4. UVa 11346 - Probability
  5. sudo: Cannot execute /usr/local/bin/zsh: No such file or directory 问题
  6. ECCV 2020 论文大盘点-实例分割篇
  7. OPNET网络仿真分析-1.1.3、OPNET Modeler
  8. 通过Keepalived实现Redis Failover自动故障切换
  9. PYQT窗口可视化编程
  10. 梦幻西游这么火, Python也不甘示弱, Python写游戏辅助软件!
  11. 北京五大不可不去的隐秘餐厅
  12. ddos源码 ntp_DDOS攻击之NTP放大攻击
  13. matlab 0106,matlab中的plotyy
  14. Android 天气APP(十九)更换新版API接口(更高、更快、更强)
  15. 模拟人生畅玩版android,模拟人生畅玩版
  16. 作为程序员,每天交清晰的工作日报,不允许含糊和不详细,大家怎么看?
  17. PE结构-空白区手动添加任意代码(附实例代码)
  18. vue笔记:父子传值奥利给!
  19. WiCloud 商业Wi-Fi管理平台
  20. 【videojs】videojs自定义全屏按钮 | videojs全屏移动端弊端 | 创建videojs菜单

热门文章

  1. 安装Adobe Premiere Pro CC 2018
  2. 常见的CSS页面布局方式
  3. cpu,cpu风扇安装?
  4. Linux--md5sum的使用
  5. RAID中有一块硬盘离线的情况下应该对其采取强制上线操作么?
  6. 海森矩阵和雅克比矩阵的区别
  7. Morn UI 学习总结
  8. Oracle优化面试题
  9. -- Could NOT find GFlags (missing: GFLAGS_INCLUDE_DIR GFLAGS_LIBRARY)
  10. FPGA和USB3.0通信