本文是Python实战–从入门到精通系列的第四篇文章:

Python实战从入门到精通第一讲–Python中的变量和数据类型

Python实战从入门到精通第二讲–Python中列表操作详解

Python实战从入门到精通之三 – 教你使用Python中条件语句

Python实战从入门到精通之四 – 教你使用Python中字典


文章目录

  • 1、字典初识
  • 2、访问字典中的值
  • 3、字典元素操作
    • 3.1 字典内添加键-值对
    • 3.2 删除键-值对
    • 3.3 修改字典中的值
    • 3.4 多行表示字典
  • 4、字典遍历
    • 4.1 遍历字典所有的键-值对
    • 4.2 遍历字典中的所有键
    • 4.3 按特定顺序遍历字典中的多有键
    • 4.4 遍历字典中的所有值
  • 5、字典嵌套
    • 5.1 字典列表
    • 5.2 在字典中存储列表
    • 5.3 在字典中存储字典

1、字典初识

字典定义: Python中,字典是一系列键-值对。每个键都与一个值相关联。
访问方式: 通过键访问与之关联的值,这些值可以是数字、字符串、列表乃至字典,Python中的任何对象基本都可以作为字典的值。
表达方式: 字典使用花括号来表示,键-值使用冒号分隔,键-值对之间使用逗号分隔,如下所示:

persons = {}  # 表示空字典
person = {'age': 19, 'city': 'BeiJing'}

2、访问字典中的值

字典中,访问字典中的值需要使用:字典名[键] 的方式进行访问,如:

person = {'age': 19, 'city': 'BeiJing'}
print(person['age'])
输出为:19

3、字典元素操作

3.1 字典内添加键-值对

字典是动态结构,能够随时在其中添加键-值对,通过使用:字典名[键] = 值的方式在在字典中添加元素,如:

person = {'age': 19; 'city': 'GuangZhou'}
person['Province'] = 'GuangDong'
print(person)
输出为:{'age':19, 'Province': 'GuangDong', 'city': 'GuangZhou'}

注:字典内键值对的排列顺序与添加顺序不同,字典不关心键值对的添加顺序,只关心键值之间的关系

3.2 删除键-值对

可以使用del语句将相应的键-值对彻底删除,使用规则:指定字典名和要删除的键,,如:

person = {'age': 19, 'city': 'BeiJing'}
print(person)  # 输出原始字典元素del  person['city']
print(person)  # 显示删除city键的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 19}

删除的键值对永远消失

3.3 修改字典中的值

通过指定:字典名[键]和新的值的方式对字典的值进行修改,

person = {'age': 19, 'city': 'BeiJing'}
print(person)  # 输出原始字典元素person['age':25]
print(person)  # 显示修改后的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 25, 'city': 'BeiJing'}

3.4 多行表示字典

对于很大的字典,或者为了表达清晰,我们可以使用多行来表示字典,如:

favorite_languages = {‘Mary’: ‘C’,  # 要有四个空格缩进‘John’: ‘Python’,# 缩进与第一行相同‘David’: ‘Java’, # 最后一行需要逗号} #缩进,与键值对缩进相同

4、字典遍历

4.1 遍历字典所有的键-值对

遍历字典所有的键-值对,可以使用for循环实现:

  • for语句第一部分: 声明两个变量,用于存储键-值对中的键和值。
  • for语句第二部分: 包含字典名和方法items(),items()方法可以返回一个键-值对列表。

用for循环遍历字典所有键-值对例子:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',
}# key和value分别表示两个变量,存储键和值,# user_0.items(),for语句的第二部分,字典名和items方法
for key, value in user_0.items(): print("\nkey:"+key)print("value:" + value)

运行结果:

key:username
value:efermikey:first
value:enricokey:last
value:fermi

4.2 遍历字典中的所有键

遍历字典中的所有键,使用方法**keys()**来实现。

方法keys()可以返回包含字典中所有键的列表

Keys方法遍历字典中的所有键:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',
}for key in user_0.keys(): #keys()方法遍历所有键print(key)

运行结果:

last
username
first

4.3 按特定顺序遍历字典中的多有键

用keys方法获取字典中的元素时,获取顺序是不可预测的。如果想获得特定顺序,可以在for循环中调用sorted() 函数对元素进行排序。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi',
}
for key in sorted(user_0.keys()):  # sorted()函数进行排序print(key)

运行结果:

first
last
username

4.4 遍历字典中的所有值

values() 方法能够返回一个只包含字典中值的列表。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {'Jen': 'python','Sarah': 'c','Edward': 'python',
}
for language in favorite_languages.values():  # 遍历字典中所有的值print(language)

运行结果:

python
python
c

values方法没有考虑是否重复。使用集合set,可以使得列表元素独一无二。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {'Jen': 'python','Sarah': 'c','Edward': 'python',
}
# 使用集合set,使得值独一无二
for language in set(favorite_languages.values()):  print(language)

运行结果(使用集合set):

 c
python

同样的,values方法也可以调用sorted函数实现按特定顺序遍历。

5、字典嵌套

字典存储在列表中,列表存储在字典中,这称为嵌套。

5.1 字典列表

列表内元素是字典的形式。

字典列表例子: 定义三个字典,每个包含颜色和点数两个键和其相关联的值,将其三个字典存储在一个了列表中。

# 三个字典
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)
输出结果:
{'points': 5, 'color': 'green'}
{'points': 10, 'color': 'yellow'}
{'points': 15, 'color': 'red'}

5.2 在字典中存储列表

当字典中的一个键关联多个值时,可以在字典中嵌套一个列表

在字典中存储列表例子: 定义一个字典,存储访问每个人喜欢的语言,这个时候,每个人喜欢的语言,可能不止一种,这时就会用到列表存储:

favorite_languages = {'jen': ['python', 'ruby'],'sarah': ['c'],'edward': ['ruby', 'go'],'phil': ['python', 'haskell'],
}for name, languages in favorite_languages.items():print("\n" + name.title() + "'s favorite languages are:")for language in languages:print("\t" + language.title())
输出结果为:Jen's favorite languages are:PythonRubySarah's favorite languages are:CPhil's favorite languages are:PythonHaskellEdward's favorite languages are:RubyGo

5.3 在字典中存储字典

与键关联的值也是一个字典

字典中存储字典例子: 对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,
并访问与每个用户名相关联的信息字典:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
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: mcurieFull name: Marie CurieLocation: ParisUsername: aeinsteinFull name: Albert EinsteinLocation: Princeton

【Python】Python实战从入门到精通之四 -- 教你使用Python中字典相关推荐

  1. 【Python】Python实战从入门到精通之三 -- 教你使用Python中条件语句

    本文是Python实战–从入门到精通系列的第三篇文章: Python实战从入门到精通第1讲–Python中的变量和数据类型 Python实战从入门到精通第2讲–Python中列表操作详解 Python ...

  2. 【Python】Python实战从入门到精通之七 -- 教你深入理解异常处理

    本文是<Python实战从入门到精通>系列之第7篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

  3. 【Python】Python实战从入门到精通之六 -- 教你读取文件

    本文是<Python实战从入门到精通>系列之第6篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

  4. 【Python】Python实战从入门到精通之五 -- 教你使用文件写入

    本文是<Python实战从入门到精通>系列之第5篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

  5. 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型

    本文是Python实战–从入门到精通系列的第一篇文章: Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 文章目录 1.变量 1.1 变量命名规则 1.2 变量名称错误 ...

  6. 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作

    本文是Python实战–从入门到精通系列的第二篇文章: [Python]Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 Python实战从入门到精通之二 – 教你使用 ...

  7. pythonweb开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  8. python web开发-Python Web开发从入门到精通

    Python Web开发从入门到精通循序渐进地讲解了Python Web开发的核心知识,并通过具体实例的实现过程演示了Web开发程序的流程.Python Web开发从入门到精通共15章,内容包括Pyt ...

  9. python人工智能开发-Python人工智能开发从入门到精通

    (1)深入浅出,实操性强.每一章都是以实例为主,读者可参考源代码,修改实例,切换数据源,就能得到自己想要的结果.目的就是让读者看得懂.学得会.做得出.(2)专业专注,学以致用.NumPy.Pandas ...

最新文章

  1. 深入解析Spring架构与设计原理-AOP
  2. 移动端自动化==Appium定位方式总结
  3. openstack下
  4. Laravel大型项目系列教程(三)之发表文章
  5. 微软官方宣布:Edge 浏览器将采用 Chromium 内核
  6. 报错,但不影响运行ERROR: JDWP Unable to get JNI 1.2 environment, jvm-GetEnv() return code = -2...
  7. FPGA初学者入门相关概念知识点
  8. Lock锁实现多线程卖票
  9. 苹果6s强制删除id锁_苹果手机丢了怎么找回?
  10. Linux下后台执行java程序
  11. 开工了,为自己做的软件。先做些控件。
  12. Linux文件类型及颜色标识整理
  13. 零基础不建议学前端_临夏零基础怎么学理发
  14. 深度学习caffe:权值初始化
  15. 在.net中使用sqlite
  16. php7 switch,Switch autocommit on or off - PHP 7 中文文档
  17. maze3D-一款三维迷宫游戏
  18. 直通车测图需要满足哪些数据?
  19. 数组中元素与字节的关系
  20. 三星BESPOKE家电系列海外发布会看点一览,定制化设计成未来家居首选

热门文章

  1. 安卓数字倒数控件_安卓11来了,感受一下
  2. Android备份onedrive,三星Note10正将OneDrive集成到Android相册应用中
  3. mysql2008无法登陆_SQL2008不能登录实例
  4. 三星s4 android8,三星全面支持安卓8.0系统,14款手机更新让人眼红
  5. 双稳态继电器工作原理图_三招带你分清继电器与接触器
  6. 手动启动_电站首台机组首次手动开机启动一次性成功
  7. linux系统怎么安装cas,CAS 在Linux中安装与配置
  8. 陕西省高等数学竞赛_关于参加“陕西高校第十二次大学生高等数学竞赛”的通知...
  9. python乐观锁代码实现_Django的乐观锁与悲观锁实现
  10. poj2441状态压缩dp基础