通过名称来访问其各个值的数据结构,映射(mapping)。

字典,是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。(键,可能是数、字符串、元组)。

1.1 字典由 键 及其相应的值组成,这种 键-值 对 成为项。键与值,用(:)分隔;项 之间用逗号分隔;整个字典放在花括号{}内。

1.2 字典(以及其他映射类型)中,键 必须是独一无二的,而字典的 值 无需如此。

2.1 函数dict

函数dict,用于从其他映射(如其他字典)或键-值对序列创建字典

  1. items = [('name','Elon'), ('age', 42)]
  2. d = dict(items)
  3. print(d)
  4. 结果:
  5. {'name': 'Elon', 'age': 42}

也可使用 关键字实参 来调用该函数

  1. d = dict(name = 'Elon', age = 42)
  2. print(d)
  3. 结果:
  4. {'name': 'Elon', 'age': 42}

2.2 基本的字典操作

  1. len(d) #返回字典d包含的项数
  2. d[k] #返回与键k相关联的值
  3. d[k] = v #将值 v 关联到键k
  4. del d[k] #删除键为k的项
  5. k in d #检查字典d是否包含键为 k 的项

(1)* 键的类型:字典中的键可以是任何不可变的类型,如浮点数、字符串或元组;

(2)* 自动添加:即便字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。(但是列表不行,必须使用类似append的方法)

  1. x = []
  2. x[42] = 'Foodbar'
  3. print(x)
  4. 结果:
  5. Traceback (most recent call last):
  6. File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1080, in <module>
  7. x[42] = 'Foodbar'
  8. IndexError: list assignment index out of range
  9.  
  10. x1 = {}
  11. x1[42] = 'Foodbar'
  12. print(x1)
  13. 结果:
  14. {42: 'Foodbar'}

(3)成员资格:表达式 k in d,查找的是键(列表 v in l 查找的是值,非索引)。检查字典的键效率更高,尤其是数据结构越大,效率差距越大。

  1. # 一个简单的数据库
  2.  
  3. # 一个将人名用作键的字典。每个人都用一个字典表示,
  4. # 字典包含'phone'和'addr',他们分别于电话号码和地址相关联
  5. people = {
  6. 'Alice':{
  7. 'phone': '',
  8. 'addr': 'Foo drive 23'
  9. },
  10. 'Beth':{
  11. 'phone': '',
  12. 'addr': 'Bar street 43'
  13. },
  14. 'Cecil':{
  15. 'phone': '',
  16. 'addr': 'Baz avenue 90'
  17. }
  18.  
  19. }
  20.  
  21. # 电话号码和地址的描述性标签,供打印输出时使用
  22. labels = {
  23. 'phone': 'phone number',
  24. 'addr': 'address'
  25. }
  26.  
  27. name = input('Name:')
  28.  
  29. # 要查找电话号码还是地址?
  30. request = input('Phone number (p) or adress (a)')
  31.  
  32. # 使用正确的键:
  33. if request == 'p': key = 'phone'
  34. if request == 'a': key = 'addr'
  35.  
  36. # 仅当名字是字典包含的键时才打印信息:
  37. if name in people:
  38. print("{}'s {} is {}.".format(name,labels[key],people[name][key]))

结果:

  1. Name:Beth
  2. Phone number (p) or adress (a)p
  3. Beth's phone number is 9102.

2.3 将字符串格式设置功能用于字典

方法format_map,用于指出你将通过一个映射来提供的所需信息。

  1. phonebook = {'Beth': '','Alice': '','Cecil': ''}
  2. name_phonebook = "Cecil's phone number is {Cecil}!".format_map(phonebook)
  3. print(name_phonebook)
  4. 结果:
  5. Cecil's phone number is 3258!

如果直接使用format,会出现报错:

  1. Traceback (most recent call last):
  2. File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1128, in <module>
  3. name_phonebook = "Cecil's phone number is {Cecil}!".format(phonebook)
  4. KeyError: 'Cecil'

format与format_map之间的区别:

format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映射关系数据时才可以使用。
format_map的参数不需传入“关键字=真实值”,而是直接传入真实的字典值

Python基础 第四章 字典(1)的更多相关文章

  1. Python基础 第四章 字典(2)字典方法&章小结

    1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...

  2. Python第四章-字典

    第四章 字典-当索引不好用时 4.0     字典可以理解成是C++里的map,可以映射任何类型.字典这种结构类型称为映射(mapping).   字典是Python中唯一内建的映射类型,字典中的值并 ...

  3. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  4. python学习(四) 字典:当索引不好用时

    第四章 字典:当索引不好用时 4.1 字典的使用 字典的适用场景: 表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改时间,用文件名作为键: 数字电话/地址簿 4.2 创建和使用字典 ...

  5. python基础一数据类型之字典

    摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...

  6. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  7. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

  8. python 基础 1.5 python数据类型(四)--字典

    一.python 数据类型--字典 1.用字符串存储信息,如:存储“姓名,身高,性别”: In [1]: info='Tom 170 M' //字符串存储信息 In [3]: info[0:3] // ...

  9. [Python笔记][第四章Python正则表达式]

    2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...

随机推荐

  1. table表格整体居中

    代码: <div style="text-align:center"> <table border="1" cellpadding=" ...

  2. AcWing:242. 一个简单的整数问题(树状数组)

    给定长度为N的数列A,然后输入M行操作指令. 第一类指令形如“C l r d”,表示把数列中第l~r个数都加d. 第二类指令形如“Q X”,表示询问数列中第x个数的值. 对于每个询问,输出一个整数表示 ...

  3. springboot中web应用的统一异常处理

    在web应用中,请求处理过程中发生异常是非常常见的情况.springboot为我们提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异 ...

  4. go区分操作系统

    package main import ( "fmt" "runtime" ) func main() { fmt.Println("Go runs ...

  5. You can't specify target table 'a' for update in FROM clause

    项目中有一个功能变动上线,其中有一张表ttt的字段cc,历史数据需要处理,把字段cc中为'xxx'的值替换为'yyy'. 表A结构如下: CREATE TABLE `ttt` ( `id` bigin ...

  6. linux:解决SSH连接Linux超时自动断开

    用SSH登录到Linux的时候,由于默认的连接超时时间很短,经常断开! 1.修改文件 # vi /etc/ssh/sshd_config 2.重启sshd服务 # /etc/init.d/sshd r ...

  7. Oracle查询表和字段

    查看表字段.类型.注释 SELECT A.COLUMN_NAME,B.comments,A.DATA_TYPE FROM USER_TAB_COLUMNS A LEFT JOIN user_col_c ...

  8. GCN入门理解

    图是信息的最佳表示方式.在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”).想一想,你的Facebook社交网络是个什么样子的:以你为中心连接上你的朋友们,他们又以不同的方式相互联系. ...

  9. typing-python用于类型注解的库

    简介 动态语言的灵活性使其在做一些工具,脚本时非常方便,但是同时也给大型项目的开发带来了一些麻烦. 自python3.5开始,PEP484为python引入了类型注解(type hints),虽然在p ...

  10. Docker使用pipework配置本地网络

    需求 在使用Docker的过程中,有时候我们会有将Docker容器配置到和主机同一网段的需求.要实现这个需求,我们只要将Docker容器和主机的网卡桥接起来,再给Docker容器配上IP就可以了. 下 ...