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
常用的这几个对象的所有方法的用法算是看完了,但是我不能保证我都记住了,有个印象就好。用的时候想到有这个方法,再过来查看一下就行,用多了就记住了。
最新文章
- [tem]线段树(白书版)
- HTML Entity Sets - All
- JQuery this 和 $(this) 详解
- ruby -- 问题解决(七)ActionController::InvalidAuthenticityToken解决办法
- MyEclipse提示键配置、提示快捷键、提示背景色、关键字颜色、代码显示、编...
- 【转载】php程序员:从1.5K到18K 一个程序员的5年成长之路
- My SQL和LINQ 实现ROW_NUMBER() OVER以及Fatal error encountered during command execution
- ocp11g培训内部教材_051课堂笔记(047)_SQL
- PHP Cookei记录用户历史浏览信息的代码
- pychon - selenium2Libray源码简介
- 【Machine Learning in Action --3】决策树ID3算法预测隐形眼睛类型
- uvalive 7500 Boxes and Balls
- Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(六)
- js获取数组中最大值,最小值
- GrayLog + Logspout + Docker 实现分布式日志聚合
- [Go] golang的range循环遍历通道
- hadoop题目(一)
- c# AutoMapper 使用方式和再封装
- JS之汉字与Unicode码的相互转化
- idea中 maven打包时时报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,