字典,相当于一个列表,不过列表的索引是数字,字典的索引是数字或者字符串。

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
QQ
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
QQ

(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的更多相关文章

  1. python数据类型:字典dict常用操作

    字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,boo ...

  2. python数据类型:dict(字典)

    一.字典的简单介绍 字典(dict)是python中唯一的一个映射类型.他是以{}括起来的键值对组成. 语法: {key1:value1,key2:value2......} 注意:key必须是不可变 ...

  3. python数据类型之dict

    1.clear:删除所有元素 #D.clear() -> None. Remove all items from D dic_a ={:::'gen'} dic_a.clear() print( ...

  4. python数据类型之 dict(map)

    字典  一.创建字典  方法①:  >>> dict1 = {}  >>> dict2 = {'name': 'earth', 'port': 80}  >& ...

  5. Python数据类型之dict和set

    Python内置了字典:dict的支持.在其他语言中也成为map,使用键-值(key-value)存储,具有极快的查找速度. 把数据放入dict的方法,除了初始化时指定外,还可以通过key放入. 由于 ...

  6. 分分钟钟学会Python - 数据类型(dict)

    今日内容 字典(dict) 具体内容 1.字典含义 帮助用户去表示一个事物的信息(事物是有多个属性). 基本格式 data = {键:值,键:值,键:值,键:值,键:值,键:值,} # 练习题 use ...

  7. python数据类型之dict(字典)

    dict字典 关注公众号"轻松学编程"了解更多. 1.概述 dict也是一种存储方式,类似于list和tuple,但是,字典采用键-值(key-value)的形式存储. 优点:具有 ...

  8. Python数据类型的内置函数之tuple(元组),dict(字典),set(集合)

    Python数据类型内置函数 - str(字符串) - list(列表) - tuple(元组) - dict(字典) - set(收集) tuple(元组)的操作 - (count)统计元组中元素出 ...

  9. Python 基础数据类型之dict

    字典是另一种可变容器模型,且可存储任意类型对象.字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:d = {k ...

随机推荐

  1. MvcApplication 中方法的那点事

    最近比较闲,不知道干点啥,想找兼职没有合适的,不找工资又不够花,o(︶︿︶)o 唉! 说多了都是泪,入正题吧. 首先,新建一个MVC4.0项目,建好之后打开Global.asax文件,在MVCAppl ...

  2. 涉及自制系统AS的几个协议总结

    IGP(Interior Gateway Protocol): 内部网关协议的总称:其下有RIP和OSPF EGP(External Gateway Protocol): 外部网关协议的总称:目前使用 ...

  3. [Linux]文件浏览

    1.使用file命令查看文件中数据的类型 [oracle@linuxforlijiaman Desktop]$ ls linux oracle.txt test.png [oracle@linuxfo ...

  4. DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9

    DB2 SQL Error: SQLCODE = -798, SQLSTATE = 428C9报错是因为 , 你往设置了ALWAYS自增的列里面插了初始值 . ALWAYS自增设置如下. -- 设置主 ...

  5. linux运维、架构之路-shell编程(二)

    一.流程控制语句 1.if语句 ①if单分支:一个条件一个结果 1 2 3 4 if 条件   then      命令 fi ②if双分支:一个条件两个结果 1 2 3 4 5 6 if 条件    ...

  6. js-关于iframe:从子页面给父页面的控件赋值方法

    项目中我们经会用到iframe,可能还会把iframe里的数值赋值给父页面空间. 接下来我们来说说有关于iframe赋值给父页面的方法. 1.子页面iframe给父页面的控件赋值方法. parent. ...

  7. H5混合开发进阶

    混合开发: 原生app里面,IOS 安卓的原生app里面,嵌套h5界面. 通过原生app里的一个webView盒子进行交互.webView是原生app内置的一个XXX,里面可以放置h5界面.可以相互调 ...

  8. 如何本地搭建centos7虚拟主机?

    1 前期准备: 下载虚拟机和CentOS安装源 VMware-workstation-full-10.0.3-1895310 CentOS-7.0-1406-x86_64-DVD.iso   以下是过 ...

  9. Asp.Net Core 使用Docker进行容器化部署(二)使用Nginx进行反向代理

    上一篇介绍了Asp.Net 程序在Docker中的部署,这篇介绍使用Nginx对Docker的实例进行反向代理 一.修改Nginx配置文件 使用winscp链接Liunx服务器,在/ect/nginx ...

  10. hadoop生态搭建(3节点)-02.ssh配置

    # ssh免密码登录 # ==================================================================node1# 一路狂按回车,最终生成(id ...