Python——数据类型之dict
字典,相当于一个列表,不过列表的索引是数字,字典的索引是数字或者字符串。
1、字典的访问
字典是典型的key-value结构,一个key对应着一个value,key就是索引,value就是要保存的值
score={'Albert':99, 'QQ':88}
print(score['Albert'])#根据key访问value
score['XP']=77#新建一个key-value对
print(score)
print('#遍历value')
for i in score:#遍历value
print(i)
print('#遍历key和value')
for key,value in score.items():
print(key,value)
输出
99
{'Albert': 99, 'QQ': 88, 'XP': 77}
#遍历value
Albert
XP
#遍历key和value
Albert 99
QQ 88
XP 77
这样就很方便的解决了索引不是数字的情况了。
字典的底层其实是散列表,或者叫hash表。
2、字典的方法
(1)clear(self):清除所有内容,将字典变为None。
(2)copy(self):复制一个字典。(这里注意,不要直接a=b,就像C里面数组的复制那样,a=b只是把b的地址赋给a了,修改a的时候就是修改b。用copy函数就可以把a和b分开。)
b={'Albert':99, 'QQ':88}
a=b.copy()
a['Albert']=0
print(b)
b={'Albert':99, 'QQ':88}
a=b
a['Albert']=0
print(b)
输出
{'Albert': 99, 'QQ': 88}
{'Albert': 0, 'QQ': 88}
这就可以看出来copy与直接赋值的区别了。
(3)fromkeys(*args, **kwargs):根据key创造一个字典
name=['Albert', 'QQ']
score=10 a=dict.fromkeys(name,score)
print(a) b=dict.fromkeys(name)
print(b)
输出
{'Albert': 10, 'QQ': 10}
{'Albert': None, 'QQ': None}
(4)get(self, k, d=None):如果k(key)在字典中,则返回value。如果不在字典中,就返回d(default)默认返回None
a={'Albert':99, 'QQ':88}
print(a.get('QQ'))
print(a.get('XP'))
print(a.get('XP',100))
输出
88
None
100
(5)items(self):返回一个包含key和value的集合,通常用来字典里的key和value
a={'Albert':99, 'QQ':88}
for key,value in a.items():
print(key,value)
输出
Albert 99
QQ 88
(6)keys(self)返回一个只包含key的集合,通常用来字典里的key
a={'Albert':99, 'QQ':88}
for key in a.keys():
print(key)
输出
Albert
(7)pop(self, k, d=None):删除某个k(key),返回相应的value,如果k找不到,就返回d,d默认为None,会抛出KeyError
a={'Albert':99, 'QQ':88}
print(a.pop('QQ'))
print(a)
print(a.pop('XP','No'))
a.pop('XP')#没有指定d
输出
88
{'Albert': 99}
No
Traceback (most recent call last):
File "C:/Users/admin/PycharmProjects/temp.py", line 15, in <module>
a.pop('XP')
KeyError: 'XP'
(8)popitem(self):也是删除一对Key-Value。但是他会把这一对Key-value当做元组返回。(字典为空也会报错)
(9)setdefault(self, k, d=None):相当于get()方法获取key的value。但是如果key不存在,他会新建一个,并设value为d,并返回d
a={'Albert':99, 'QQ':88}
print(a.setdefault('QQ'))
print(a)
print(a.setdefault('XP',77))
print(a)
输出
88
{'Albert': 99, 'QQ': 88}
77
{'Albert': 99, 'QQ': 88, 'XP': 77}
(10)update(self, E=None, **F)用字典EF更新字典
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
a={'Albert':99, 'QQ':88}
E={'Albert':11, 'QQ':22}
F=[33,44]
print(a)
a.update(E)
print(a)
输出
{'Albert': 99, 'QQ': 88}
{'Albert': 11, 'QQ': 22}
(11)values(self):主要用来遍历values
a={'Albert':99, 'QQ':88}
print(a.values())
for v in a.values():
print(v)
输出
dict_values([99, 88])
99
88
常用的这几个对象的所有方法的用法算是看完了,但是我不能保证我都记住了,有个印象就好。用的时候想到有这个方法,再过来查看一下就行,用多了就记住了。
Python——数据类型之dict的更多相关文章
- python数据类型:字典dict常用操作
字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...
- python数据类型:dict(字典)
一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成. 语法: {key1:value1,key2:value2......} 注意:key必须是不可变 ...
- python数据类型之dict
1.clear:删除所有元素 #D.clear() -> None. Remove all items from D dic_a ={:::'gen'} dic_a.clear() print( ...
- python数据类型之 dict(map)
字典 一.创建字典 方法①: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >& ...
- Python数据类型之dict和set
Python内置了字典:dict的支持.在其他语言中也成为map,使用键-值(key-value)存储,具有极快的查找速度. 把数据放入dict的方法,除了初始化时指定外,还可以通过key放入. 由于 ...
- 分分钟钟学会Python - 数据类型(dict)
今日内容 字典(dict) 具体内容 1.字典含义 帮助用户去表示一个事物的信息(事物是有多个属性). 基本格式 data = {键:值,键:值,键:值,键:值,键:值,键:值,} # 练习题 use ...
- python数据类型之dict(字典)
dict字典 关注公众号"轻松学编程"了解更多. 1.概述 dict也是一种存储方式,类似于list和tuple,但是,字典采用键-值(key-value)的形式存储. 优点:具有 ...
- Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)
Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) tuple(元组)的操作 - (count)统计元组中元素出 ...
- Python 基础数据类型之dict
字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:d = {k ...
随机推荐
- 开始重学java【门头沟2017年12月6日】
现在从struts2开始重新学习java, 想找个人一起学习java/php都可以. 学习时间大概是两个月,就是年前这段时间. 下一个阶段就是做项目进行练习.(时间为:一个月时间) 不管是学习java ...
- Vue nodejs商城-订单模块
一.订单列表渲染 新建OrderConfirm.vue订单确认页面,添加路由 src/router/index.js添加路由 import OrderConfirm from '@/views/Ord ...
- vue+nodejs+express+mysql 建立一个在线网盘程序
vue+nodejs+express+mysql 建立一个在线网盘程序 目录 vue+nodejs+express+mysql 建立一个在线网盘程序 第一章 开发环境准备 1.1 开发所用工具简介 1 ...
- 基于layer封装的异步加载分部视图弹出层
背景:之前一直用的artdialog,但是样式不是很好看,后来偶然看到layer,觉得不错,但是对于.net mvc来说,不能像artdialog一样弹出分部视图是很难受的.所以下面的方法就解决了. ...
- ABAP术语-Business Components
Business Components 原文:http://www.cnblogs.com/qiangsheng/archive/2007/12/26/1015254.html Group of re ...
- substr在oracle和mysql中的应用和区别
Oracle: 书写格式: (1)Select substr(字段名(string) , 起始位置(int) , 截取长度(int)) 示例: selectsubstr('123456',0,3)a ...
- MySQL传输表空间使用方法
1.目标端创建同样的表结构 CREATE TABLE `test` ( `id` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHAR ...
- Linux入门-第四周
1.查找/var目录下不属于root.lp.gdm的所有文件 find命令:实时查找工具,通过指定路径完成文件查找,其特点查找速度略慢,可以精确查找,实时查找,可以只搜索用户具备读取和执行权限的目录 ...
- VULTR的VPS在centos的操作系统中出现网站无法访问 80端口被firewall禁止
导语:叶子在为一位客户配置web服务器环境的时候,出现网站不能访问的情况,但ping正常.客户的服务器是在VULTR上购买的VPS,安装的操作系统为centos 7.3.经过叶子的分析,认为是防火墙阻 ...
- 服务命令只支持基本的LSB操作(启动、停止、重新启动、尝试重启、重新加载、强制重新加载、状态)。对于其他操作,请尝试使用systemctl。
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, forc ...