python学习总结--字典
字典
1. 基本概念
字典与java中的map类似,是一个无序的映射结构,由一个个键-值(key-value)对组成。字典的键是访问其元素的索引,不能重复。在字典里,一般使用字符串或整型数字作为键,(或者说任何一个含有__hash__()和__eq__()方法的对象。)字典中的值可以是任何类型的对象。
2. 创建字典
方式一:直接创建
person = {'name':'Amanda','age':12,'sex':'female','addr':'NewYork'}
说明:
字典用花括号{}括起来,每一对元素通过“键:值”的形式表达,不同的对之间用逗号分隔。
方式二:dict()函数创建
>>> items = [('Alice','02391'),('Bob','0283'),('Jimmy','2883')]
>>> dict(items)
{'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
dict()函数接收一个映射或者(键、值)序列创建字典。
3. 字典的基本操作
3.1访问字典元素
用法:dict[key],返回字典中key对应的value值。当key不存在时会引发KeyError异常。如:
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> dt['Bob']
'0283'
>>> dt['bb']
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
dt['bb']
KeyError: 'bb'
3.2 给字典添加元素
用法:dict[key]=value。当key不存在时,会新建一个元素添加到字典里。如:
>>> dt = {1:'Apple',2:'Sumsung',3:'xiaomi'}
>>> dt[4] = 'htc'
>>> dt
{1: 'Apple', 2: 'Sumsung', 3: 'xiaomi', 4: 'htc'}
3.3 修改字典元素值
用法:dict[key]=value。修改字典中已存在的key对应的value值。
>>> dt = {1:'Apple',2:'Sumsung',3:'xiaomi'}
>>> dt[3]= 'htc'
>>> dt
{1: 'Apple', 2: 'Sumsung', 3: 'htc'}
3.4 删除字典元素
用法:del dict[key]。删除字典中指定key和其对应的value值。若键key不存在,会引发keyError异常。如
>>> dt = {1:'Apple',2:'Sumsung',3:'xiaomi'}
>>> del dt[3]
>>> dt
{1: 'Apple', 2: 'Sumsung'}
>>> del dt['1']
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
del dt['1']
KeyError: '1'
3.5 获取字典键值对的数量
用法:len(dict).如:
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> len(dt)
3
3.6 检查字典中是否存在某key
用法:key in dict.检查字典dict中是否含有键为key的项,返回值为布尔型。如:
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> 'Alice' in dt
True
>>> 'Ashly' in dt
False
4.字典的格式化字符串
我们可以对一个对象进行格式化,也可以把多个对象放到元组里进行格式化。如:
>>> "What's wrong with you,%s" % 'Lily'
"What's wrong with you,Lily"
>>> "Can you caculate this statement, %d +%d?" % (12,108)
'Can you caculate this statement, 12 +108?'
现在我们也可以对一个字典进行格式化,需要在%后添加“(Key)”,被格式化的对象换成字典。如:
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> "Alice number is %(Alice)s" % dt
'Alice number is 02391'
格式化时,通过给出的key从字典中获取其对应的value值作为被格式化的对象。若key不存在则会出错。我们可以一次格式化字典中的多个对象。下面看一个例子。
temple = '''<html>
<head><title>%(title)s</title></head>
<body>
<h1>%(title)s</h1>
<p>%(text)s</p>
</body>
<html>'''
data = {'title':'Home Page','text':'welcome to my home page'}
print temple % data
程序运行结果是:
5. 字典的常用方法
下面介绍总结一些字典中常用的方法。
5.1 获取字典对应键的值get()/setdefault()
get()
用法:dict.get(key[,newValue])。返回字典中键为key的值,与dict[key]类似。不同的是,若键不存在,默认返回None,而不会抛出异常,也可以指定返回值。
>>> d = {'title':'welcome','context':'welcome to my homepage','writer':'Alice'}
>>> d.get('title')
'welcome'
>>> rs = d.get('name')
>>> print rs
None
>>> rs = d.get('name','Jhon')
>>> rs
'Jhon'
setdefault()
与get()相似,返回指定键的值。不同的是,当键不存在时,setdefault()方法会创建一个新建,对应的值默认是None,也可以设定,并返回新建对应的值。如:
>>> dt = {1:'bee',2:'fly',3:'paguin'}
#键存在
>>> dt.setdefault(1,'animal')
'bee'
>>> dt
{1: 'bee', 2: 'fly', 3: 'paguin'}
#键不存在
>>> dt.setdefault(4,'animal')
'animal'
>>> dt
{1: 'bee', 2: 'fly', 3: 'paguin', 4: 'animal'}
5.2 检查字典中是否含有某键has_key()
用法:dict.has_key(key), 相当于 key in dict.如:
>>> d = {'title':'welcome','context':'welcome to my homepage','writer':'Alice'}
>>> d.has_key('title')
True
>>> 'title' in d
True
5.3 获取字典所有的键keys()/iterkeys()
dict.keys()获取字典所有的键,返回一个列表。而dict.iterkeys()返回的是键的迭代器。需要进行迭代时才能获取到真正的键。如
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> dt.keys()
['Bob', 'Jimmy', 'Alice']
>>> it = dt.iterkeys()
#it为迭代器对象,iterator
>>> it
<dictionary-keyiterator object at 0x0134A1E0>
>>> list(it)
['Bob', 'Jimmy', 'Alice']
5.4 获取字典所有的值values()/itervalues()
与keys()/iterkeys()相似,values()/itervalues()分别返回字典的所有值的列表和其迭代器。值可以重复。如:
>>> dt = {1:'bee',2:'fly',3:'paguin',4:'fly'}
>>> dt.values()
['bee', 'fly', 'paguin', 'fly']
>>> it = dt.itervalues()
>>> list(it)
['bee', 'fly', 'paguin', 'fly']
5.5 获取字典所有的项items()/iteritems()
dict.items()以列表的形式返回字典所有的项,每一项作为一个元组。Dict.tieritems()返回的是字典所有项的一个迭代器。如
>>> dt = {'Bob': '0283', 'Jimmy': '2883', 'Alice': '02391'}
>>> dt.items()
[('Bob', '0283'), ('Jimmy', '2883'), ('Alice', '02391')]
>>> it = dt.iteritems()
#it为迭代器对象,iterator
>>> it
<dictionary-itemiterator object at 0x0130DDB0>
>>> list(it)
[('Bob', '0283'), ('Jimmy', '2883'), ('Alice', '02391')]
5.6 给字典添加项update()
用法:dict.update(obj), obj可以是一个字典,也可以是键值对。若与字典中原有的键重复,就覆盖原值。如:
>>> dt = {1:'bee',2:'fly',3:'paguin'}
>>> more = {4:'red',1:'blue'}
#字典
>>> dt.update(more)
>>> dt
{1: 'blue', 2: 'fly', 3: 'paguin', 4: 'red'}
>>> more
{1: 'blue', 4: 'red'}
#键值对
>>> dt.update([(5,'cat'),(6,'dog')])
>>> dt
{1: 'blue', 2: 'fly', 3: 'paguin', 4: 'red', 5: 'cat', 6: 'dog'}
5.7 删除字典的项pop()/popitem()
用法:dict.pop(key).删除字典指定key的项,返回key对应的值。Key不存在时引发异常。dict.popitem()随机删除字典的一项,并返回该项。如:
>>> dt = {1:'bee',2:'fly',3:'paguin',4:'beat'}
>>> dt.pop(1)
'bee'
>>> dt
{2: 'fly', 3: 'paguin', 4: 'beat'}
#键不存在
>>> dt.pop('1')
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
dt.pop('1')
KeyError: '1'
>>> dt.popitem()
(2, 'fly')
>>> dt
{3: 'paguin', 4: 'beat'}
5.8 清空字典clear()
清空字典所有的项,这是一个原地操作,无返回值。如
>>> dt = {1:'bee',2:'fly',3:'paguin'}
>>> dtcpy = dt
>>> dt.clear()
>>> dt
{}
>>> dtcpy
{}
5.9 复制字典copy()
用法:dict.copy(),返回具有相同元素的字典。
>>> srcDict = {'userName':'Jhon','sex':'male','tel':['0231','1241','2619']}
>>> cpyDict = srcDict.copy()
>>> cpyDict['userName'] = 'Jimy'
>>> cpyDict
{'userName': 'Jimy', 'tel': ['0231', '1241', '2619'], 'sex': 'male'}
>>> srcDict
{'userName': 'Jhon', 'tel': ['0231', '1241', '2619'], 'sex': 'male'}
>>> cpyDict['tel'].remove('0231')
>>> cpyDict
{'userName': 'Jimy', 'tel': ['1241', '2619'], 'sex': 'male'}
>>> srcDict
{'userName': 'Jhon', 'tel': ['1241', '2619'], 'sex': 'male'}
可以看到copy()是一种浅拷贝,不是获得字典的副本。因此若通过新变量对字典进行值替换,不会改变原字典的内容。但若修改了字典中的值,原字典也会被改变。
为了避免这种情况,我们可以使用copy模块的deepcopy()函数,它是一种深拷贝,复制原字典中包含的所有元素返回一个新对象给新变量。因此通过新变量修改字典不会影响到原来的字典。如:
>>> from copy import deepcopy
>>> srcDict = {'userName':'Jhon','sex':'male','tel':['0231','1241','2619']}>>> deepDict = deepcopy(srcDict)
>>> deepDict = deepcopy(srcDict)
>>> deepDict['tel'].remove('0231')
>>> deepDict
{'userName': 'Jhon', 'tel': ['1241', '2619'], 'sex': 'male'}
>>> srcDict
{'userName': 'Jhon', 'tel': ['0231', '1241', '2619'], 'sex': 'male'}
python学习总结--字典相关推荐
- Python学习.第六天.字典
Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...
- SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理
SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...
- Python学习:字典(dictionary)
Python学习:字典(dictionary) 异常处理小技巧 异常 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个 ...
- python学习(字典、用户输入和while循环)
前言:上次学习到了if语句,这次接着进行学习. 字典 字典能够准确地为各种真实物体建模,且能够将相关信息关联起来. 使用字典 字典是一系列的键--值对,一个建对应一个值,值可以为数字.字符串等 在Py ...
- Python学习(五)字典
字典 1.一个简单的字典 现在想存储一个人的基本信息,比如姓名,年龄等信息,应该怎样存储呢?下面是一个简单的字典,存储了一个人的相关信息. people_0 = {"name": ...
- Python学习6 字典基础知识和常用函数
字典概念 字典是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.为了保存具有映射关系的数据,Python 提供了字典,字典相当于保存了两组数据,其中一组数据是关键数据,被称为 ...
- python学习—伍—字典
目录 零.字典基础 简单字典举例 字典是什么 访问字典中的值 添加键值对 创建空字典 修改字典中的值 删除键值对 由类似对象组成的字典 使用 get() 来访问值 壹.遍历字典 遍历所有键值对 遍历字 ...
- python学习04——字典
文章目录 1. 字典的创建 2. 字典的元素查找 2.1 使用`[]` 2.2 使用`get()`函数 3. 字典的增删改操作 3.1 判断元素 3.2 增加元素 3.3 删除元素 3.3.1 删除某 ...
- Python 学习笔记 - 字典
1.使用字典 字典 是一系列键-值对. * 每个键都与一个值相关联,你可以使用键来访问与之相关联的值. * 与键相关联的值可以是数字.字符串.列表乃至字典. * 事实上,可将任何Python对象用做字 ...
- Python学习之字典
#字典 ''' 语法: 字典名 = {'键':'值','键':'值',....} 例如:test = {'color':'pink','points':7} print(test['color']) ...
最新文章
- Exchange 2016证书配置
- 【数据竞赛】长文本竞赛上分的三种策略。
- linux无盘windows系统,Linux无盘启动Win2000终端
- 微盟数据库的涅槃之旅
- 中英文字体名字对应表
- Linux常用的25条命令
- AI产品经理必修课:机器学习算法
- 汇编语言常见错误(转载)
- yml文件tab 空格_YAML 文件介绍
- [HDU3756]Dome of Circus
- 服务器装系统蓝屏怎么办,重装系统蓝屏怎么办
- 数字电视 机顶盒原理
- 愉快的在vscode上刷leetcode
- DBMS (数据库管理系统) 是什么
- PYTHON 之 多线程 and 多进程
- win7的音量图标不见了
- 遥感影像语义分割论文笔记(一)FarSeg CVPR2020
- 2.12 二项式系数加法解 C实现
- 福大携手移动云,共启数字教育新篇章!
- HTML小游戏11 —— 横版恐龙大冒险游戏(附完整源码)
热门文章
- 基于颜色布局描述符(CLD)图像特征提取算法使用Python实现简单的人脸检测功能并使用PyQt5构建简单的功能界面(数字图像处理课程实验)
- xsd、tdt文件说明
- Orange API 网关部署安装总结
- 【Pytorch】torch.nn.LeakyReLU()
- 执行应用程序或者加载动态库时出现: No such file or directory
- Corda DemoBench for V1.0
- STP——BPDU格式及字段说明
- 坦克大战JAVA版(全码)
- 在word文件中怎么调整行间距
- 分布式事务七种解决方案,最后一种经典了!