Python基础 第四章 字典(1)
通过名称来访问其各个值的数据结构,映射(mapping)。
字典,是Python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下。(键,可能是数、字符串、元组)。
1.1 字典由 键 及其相应的值组成,这种 键-值 对 成为项。键与值,用(:)分隔;项 之间用逗号分隔;整个字典放在花括号{}内。
1.2 字典(以及其他映射类型)中,键 必须是独一无二的,而字典的 值 无需如此。
2.1 函数dict
函数dict,用于从其他映射(如其他字典)或键-值对序列创建字典
items = [('name','Elon'), ('age', 42)]
d = dict(items)
print(d)
结果:
{'name': 'Elon', 'age': 42}
也可使用 关键字实参 来调用该函数
d = dict(name = 'Elon', age = 42)
print(d)
结果:
{'name': 'Elon', 'age': 42}
2.2 基本的字典操作
len(d) #返回字典d包含的项数
d[k] #返回与键k相关联的值
d[k] = v #将值 v 关联到键k
del d[k] #删除键为k的项
k in d #检查字典d是否包含键为 k 的项
(1)* 键的类型:字典中的键可以是任何不可变的类型,如浮点数、字符串或元组;
(2)* 自动添加:即便字典中原本没有的键,也可以给它赋值,这将在字典中创建一个新项。(但是列表不行,必须使用类似append的方法)
x = []
x[42] = 'Foodbar'
print(x)
结果:
Traceback (most recent call last):
File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1080, in <module>
x[42] = 'Foodbar'
IndexError: list assignment index out of range x1 = {}
x1[42] = 'Foodbar'
print(x1)
结果:
{42: 'Foodbar'}
(3)成员资格:表达式 k in d,查找的是键(列表 v in l 查找的是值,非索引)。检查字典的键效率更高,尤其是数据结构越大,效率差距越大。
# 一个简单的数据库 # 一个将人名用作键的字典。每个人都用一个字典表示,
# 字典包含'phone'和'addr',他们分别于电话号码和地址相关联
people = {
'Alice':{
'phone': '',
'addr': 'Foo drive 23'
},
'Beth':{
'phone': '',
'addr': 'Bar street 43'
},
'Cecil':{
'phone': '',
'addr': 'Baz avenue 90'
} } # 电话号码和地址的描述性标签,供打印输出时使用
labels = {
'phone': 'phone number',
'addr': 'address'
} name = input('Name:') # 要查找电话号码还是地址?
request = input('Phone number (p) or adress (a)') # 使用正确的键:
if request == 'p': key = 'phone'
if request == 'a': key = 'addr' # 仅当名字是字典包含的键时才打印信息:
if name in people:
print("{}'s {} is {}.".format(name,labels[key],people[name][key]))
结果:
Name:Beth
Phone number (p) or adress (a)p
Beth's phone number is 9102.
2.3 将字符串格式设置功能用于字典
方法format_map,用于指出你将通过一个映射来提供的所需信息。
phonebook = {'Beth': '','Alice': '','Cecil': ''}
name_phonebook = "Cecil's phone number is {Cecil}!".format_map(phonebook)
print(name_phonebook)
结果:
Cecil's phone number is 3258!
如果直接使用format,会出现报错:
Traceback (most recent call last):
File "D:/Python/PycharmProjects/untitled1/venv/Robots_learning.py", line 1128, in <module>
name_phonebook = "Cecil's phone number is {Cecil}!".format(phonebook)
KeyError: 'Cecil'
format与format_map之间的区别:
format是一种所有情况都能使用的格式化方法,format_map仅使用于字符串格式中可变数据参数来源于字典等映射关系数据时才可以使用。
format_map的参数不需传入“关键字=真实值”,而是直接传入真实的字典值。
Python基础 第四章 字典(1)的更多相关文章
- Python基础 第四章 字典(2)字典方法&章小结
1. clear 方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None) d = {} d['name'] = 'Gumby' d['age'] = 42 print(d) re ...
- Python第四章-字典
第四章 字典-当索引不好用时 4.0 字典可以理解成是C++里的map,可以映射任何类型.字典这种结构类型称为映射(mapping). 字典是Python中唯一内建的映射类型,字典中的值并 ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- python学习(四) 字典:当索引不好用时
第四章 字典:当索引不好用时 4.1 字典的使用 字典的适用场景: 表示一个游戏棋盘的状态,每个键都是由坐标值组成的元组: 存储文件修改时间,用文件名作为键: 数字电话/地址簿 4.2 创建和使用字典 ...
- python基础一数据类型之字典
摘要: python基础一数据类型之一字典,这篇主要讲字典. 1,定义字典 2,字典的基础知识 3,字典的方法 1,定义字典 1,定义1个空字典 dict1 = {} 2,定义字典 dict1 = d ...
- Python基础知识(四)
Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
- python 基础 1.5 python数据类型(四)--字典
一.python 数据类型--字典 1.用字符串存储信息,如:存储“姓名,身高,性别”: In [1]: info='Tom 170 M' //字符串存储信息 In [3]: info[0:3] // ...
- [Python笔记][第四章Python正则表达式]
2016/1/28学习内容 第四章 Python字符串与正则表达式之正则表达式 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串,主要用于字符串处理 ...
随机推荐
- 2019.6.28 校内测试 T4 【音乐会】达拉崩吧·上
考试的一道附加题~ 一看题目描述:把区间[l,r]里每个数异或上x,求区间[l,r]里所有数的异或和,这明显的要用数据结构或RMQ吧. 恩,所以正解就是线段树啦,至于树状数组行与否,不知道~ wate ...
- vue 重置data中表单form的值 重置变量
export default { data() { return { form:{ name:"张三", age:13, sex:1, address:"" } ...
- Js中Array常用方法小结
说起Array的方法,不免让人皱一下眉头,下面我们从增删改查角度依次来总结. 1.增 push: 将传入的参数 ,插入数组的尾部,并返回新数组的长度.不管传入参数为一个值还是一个数组,都作为插入数组的 ...
- BufferedWriter中write与close函数使用
BufferedWriter 是一个缓冲字符输出流,可以将要输出的内容先缓冲到一个字符数组中,等字符数组满了才一次性写到输出流内,默认的字符数组长度为8192.使用BufferedWriter 时需要 ...
- python 中对象is和==是怎么比较的
Python中的对象包含三要素:id.type.value.其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值.is判断的是a对象是否就是b对象,是通过id来判断的.==判断的 ...
- ThinkPHP6.0学习之项目安装页面的开发
在我们做一个项目的时候,如果是自己用或者是给同行用的话往往不需要做一个安装页面的,但是如果是将项目给一些不怎么会操作服务器,不怎么会程序的人用的时候,我们就需要一个安装页面来帮助他们更好的将项目安装好 ...
- mod 运算与乘法逆元
mod 运算与乘法逆元 %运算 边乘边mod 乘法 除法 mod 希望计算5/2%7=6 乘法 除法 mod 希望计算5/2%7=6 两边同时/x 在取mod(p)运算下,a/b=a*bp-2 bp- ...
- 属性 每秒10万吞吐 并发 架构 设计 58最核心的帖子中心服务IMC 类目服务 入口层是Java研发的,聚合层与检索层都是C语言研发的 电商系统里的SKU扩展服务
小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研 ...
- React Native init初始化项目时报错
之前新建RN项目都不会出现这个问题,今天报错如下,这里记录下吧. 报错截图: This will walk you through creating a new React Native projec ...
- C#的String.Format举例
1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0 ...