Python基础 第四章 字典(1)
2024-09-05 05:05:27
通过名称来访问其各个值的数据结构,映射(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的参数不需传入“关键字=真实值”,而是直接传入真实的字典值。
最新文章
- Swift 和 C# 的语法比较
- ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆AnalyzerTool分词工具.非常实用!
- ASP.NET网页生成EXCEL并下载(利用DataGrid或GridView等)
- 淘宝初始化css代码
- hdu 2089
- CentOS终端界面登入Linux
- JS 数组的基础知识
- CentOS 6.3 源码安装LAMP(Linux+Apache+Mysql+Php)环境
- SQl 判断 表 视图 临时表等 是否存在
- 饿了么移动APP的架构演进(转)
- .net c# 提交包含文件file 的form表单 获得文件的Stream流
- SZU:A66 Plastic Digits
- html之结构化标记
- 工作中代码笔记 -- adb命令篇
- Kubernetes的污点和容忍(下篇)
- Python笔记之数据类型
- 多线程之BlockingQueue中 take、offer、put、add的一些比较
- vCenter server 的部署和实施
- C#基础回顾:正则表达式-转
- gets函数