python的dict()字典数据类型的方法详解以及案例使用
一、之前的回顾
# int 数字
# str 字符串
# list 列表
# tuple 元组
# dict 字典
字典中最重要的方法
keys()
values()
items()
get
update
字典是以 "key":"value" 的方式存储的
1、字典里面是键值对,每个元素之间也是用逗号分隔,是用{}大括号括起来的
字典里面的value可以是任何值,可以无限嵌套列表和元组
布尔值(不能跟0或1一起出现,当key里面没有0和1就可以做key)、列表、字典不能作为字典的key
字典是无序的,每次运行,输出的结果都不是固定的
二、下面了解下字典的常用操作
info = {"k1": "v1","k2": "v2"} print (info)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k1': 'v1', 'k2': 'v2'} info = {"k1": 18,"k2": True,"k3":[11,[],(),22,33,{"kk1":"vv1","kk2":"vv2","kk3":(11,22,),}],"k4":(11,22,33,44,) } print (info)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': True, 'k1': 18, 'k3': [11, 22, 33, {'kk3': (11, 22), 'kk2': 'vv2', 'kk1': 'vv1'}], 'k4': ()}
View Code
2.数字、字符串、布尔值、元组、都可以做key
info = {2:"abc","k1":"def",True:"123",(11,22):"456" } print (info)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k1': 'def', True: '123', 2: 'abc', (11, 22): '456'}
View Code
3.列表和字典都不能作为字典的key
(1)列表不能作为字典的key
info = {2:"abc","k1":"def",True:"123",[11,22]:"456" }TypeError: unhashable type: 'list'
View Code
(2)字典不能作为字典的key
info = {2:"abc","k1":"def",True:"123",{"k3":"v3"}:"456" }TypeError: unhashable type: 'dict'
View Code
4、字典去保存的时候是按照哈希表保存的
5、字典是无序的(发现每次打印结果都不一样,所以字典是无序的)
第一次打印
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'k2': True, 'k4': (11, 22, 33, 44), 'k1': 18, 'k3': [11, [], (), 22, 33, {'kk2': 'vv2', 'kk1': 'vv1', 'kk3': (11, 22)}]}
第二次打印
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'k4': (11, 22, 33, 44), 'k1': 18, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k2': True}
6.按照key去取值,比如要取到18这个值应该怎么做(这里就不是索引的的0123这些了)
info = {"k1": 18,"k2": True,"k3":[11,[],(),22,33,{"kk1":"vv1","kk2":"vv2","kk3":(11,22,),}],"k4":(11,22,33,44,) } v = info["k1"] print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py18
View Code
比如想要拿到99999这个值,就是下面这样写了(因为想拿3这个key对应的value,所以直接就写3这个数字就可以了,不用带双引号)
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } v = info[3] print(v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py99999
View Code
7、拿到11 这个元素该怎么写
第一步拿到k3这个key,结果就是一个列表了,想要拿到元组里面的那个11,就得先拿列表里面的整个字典的元素,位置是5
v = info["k3"] print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py[11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2', 'kk1': 'vv1'}]
View Code
拿到列表里面的这个字典之后,要想取到元组里面的11,首先得拿到kk3这个key对应的value
v = info["k3"][5] print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'kk2': 'vv2', 'kk3': (11, 22), 'kk1': 'vv1'}
现在拿到这个元组了,想要元组里面的11这个元素就简单了,11位于这个元素的第0个位置
v = info["k3"][5]["kk3"] print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py(11, 22)
拿到元组中的11的这个元素了
v = info["k3"][5]["kk3"][0] print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py11
合起来就是下面这
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } v = info["k3"][5]["kk3"][0] print(v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py11
8.删除字典中的key
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } del info["k1"] print (info)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{3: 99999, 'k3': [11, [], (), 22, 33, {'kk1': 'vv1', 'kk2': 'vv2', 'kk3': (11, 22)}], 'k4': (11, 22, 33, 44)}
View Code
9.删除kk1这个key
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } del info["k3"][5]["kk1"] print (info)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k1': 18, 'k3': [11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2'}], 3: 99999, 'k4': (11, 22, 33, 44)}
View Code
10、字典支持for循环,默认循环的时候只有key
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } for n in info:print (n)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyk13k3k4
View Code
11.取字典里面的key,字典里面也有一个方法叫keys
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } # for n in info: # print (n) v = info.keys() print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pydict_keys(['k1', 3, 'k4', 'k3'])
View Code
12.取字典里面的values 有一个方法叫做value,可以结合一下for循环,一个一个的打印出来,为啥只有四行呢,因为key只有4个,这是对应的4个key的4个value
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } for n in info.values():print (n)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py99999[11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2', 'kk1': 'vv1'}](11, 22, 33, 44)18
View Code
13.既想拿到key 又想拿到value(自己写for循环)
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } for n in info.keys():print (n,info[n])C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyk4 (11, 22, 33, 44)k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22), 'kk1': 'vv1'}]3 99999k1 18
View Code
14、既拿到key又拿到value,字典有一个方法,items 我们用一下试试
因为是2个值,所以循环的时候,要用两个变量,这样items这个方法才会把key的值赋值给k,把value的值赋值给v,最后在打印k,v
info = {"k1": 18,3: 99999,"k3": [11,[],(),22,33,{"kk1": "vv1","kk2": "vv2","kk3": (11, 22,),}],"k4": (11, 22, 33, 44,) } for k,v in info.items():print (k,v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyk1 18k4 (11, 22, 33, 44)3 99999k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk1': 'vv1', 'kk3': (11, 22)}]
View Code
二、dict字典的方法详解
1、clear(self)
D.clear() -> None. Remove all items from D.
清空字典
D = {"11":"aa","22":"bb","33":"cc"} v = D.clear() print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyNone
View Code
2. copy(self) 浅拷贝
D = {"11":"aa","22":"bb","33":"cc"} v = D.copy() print (v) print (D)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'22': 'bb', '11': 'aa', '33': 'cc'}{'22': 'bb', '11': 'aa', '33': 'cc'}
View Code
3. fromkeys
根据序列,创建字典,并指定统一一个value作为key的值
Returns a new dict with keys from iterable and values equal to value
@staticmethod # known case 这是静态方法的意
def fromkeys(*args, **kwargs)
静态方法是这样使用的 类名.方法
这个必须传2个参数,第一个参数是用来创建字典的key的,必须是可迭代对象,列表、元组,字符串都可以,第二个参数是这些key的统一的值
第一个参数是列表的方式
v = dict.fromkeys(["name","11","woai"],123) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'woai': 123, '11': 123, 'name': 123}
View Code
第一个参数是元组的方式
v = dict.fromkeys(("what","66","woai"),123) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'woai': 123, '66': 123, 'what': 123}
View Code
第一个参数是字符串的方式
v = dict.fromkeys("name",123) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'m': 123, 'e': 123, 'n': 123, 'a': 123}
View Code
4. get(self, k, d=None)
获取key的值
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
我们通过这种方法的话,如果key不存在的话,程序就直接报错了
D = {"11":"aa","22":"bb","33":"cc"}
v = D["111"]
print (v)
KeyError: '111'
get这个方法在取值的时候,直接加key的名字就可以取到key的对应的值
D = {"k1":"v1","k2":"v2"} v = D.get("k1") print(v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyv1
View Code
当要取的这个key不存在时,可以指定一个返回值,默认是None
D = {"k1":"v1","k2":"v2"} v = D.get("k3") print(v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyNone
当要取的这个key不存在时,指定一个固定的返回值
D = {"k1":"v1","k2":"v2"} v = D.get("k3","000") print(v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py000
5. items(self)
同时拿到key和value
D = {"k1":"v1","k2":"v2"} for n in D.items():print(n)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py('k2', 'v2')('k1', 'v1')
6. keys(self)
取出字典中的所有key
D = {"k1":"v1","k2":"v2"} for n in D.keys():print(n)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyk2k1
7. values(self)
取出字典里面的所有value
D = {"k1":"v1","k2":"v2"} for n in D.values():print(n)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyv2v1
8. pop(self, k, d=None)
删除指定的key
D = {"k1":"v1","k2":"v2"} v = D.pop("k1") print (D)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2'}
删除指定的key并把删除的value打印出来
D = {"k1":"v1","k2":"v2"} v = D.pop("k1") v就是指定删除的key 值是v1 print (D,v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2'} v1
当删除的指定的key不存在的时候,可以指定一个参数,让结果返回这个指定的参数
D = {"k1":"v1","k2":"v2"} v = D.pop("k3","000") print (D) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k1': 'v1', 'k2': 'v2'}000
9.popitem(self)
随机删除一个key
被删除的key和value是以一个元组的方式输出的
D = {"k1":"v1","k2":"v2"} v = D.popitem() print (D) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2'}('k1', 'v1')
也可以这样写
D = {"k1":"v1","k2":"v2"} k,v = D.popitem() print (D,k,v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2'} k1 v1
10. setdefault(self, k, d=None)
设置key对应的值,
如果参数里面的key已存在,则不设置,获取当前key对应的值
如果参数里面的key不存在,则设置key的值,获取当前key对应的值
当key存在的时候,则不设置,并且获取当前key的值
D = {"k1":"v1","k2":"v2"} v = D.setdefault("k1","woaini") print (D) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2', 'k1': 'v1'}v1
当key不存在的时候,则增加一个key,并设置key的值,并返回参数中指定key的值
D = {"k1":"v1","k2":"v2"} v = D.setdefault("k3","woaini") print (D) print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k3': 'woaini', 'k2': 'v2', 'k1': 'v1'}woaini
11. update(self, E=None, **F)
如果key存在的话,就更新key的值,如果key不存在的话,就增加到字典里面
k1是在原来基础上修改的,k3是新增的
D = {"k1":"v1","k2":"v2"} D.update({"k1":"333","k3":"666"}) print (D)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k3': '666', 'k2': 'v2', 'k1': '333'}
第二种写法:
D = {"k1":"v1","k2":"v2"} D.update(k1=111,k3=666,k5="woaini") print (D)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py{'k2': 'v2', 'k5': 'woaini', 'k1': 111, 'k3': 666}
D.update(k1=111,k3=666,k5="woaini")
相当于在内部自动转换成一个字典,做个更新
如果参数里面是**kwargs 这样的,默认就会把
D.update(k1=111,k3=666,k5="woaini") 自动转换成字典
12.字典里面的in操作
(1)判断字典的key里面是否包含k1
只能判断key不能判断vlaue,想判断value怎么办呢,看(2)
D = {"k1":"v1","k2":"v2"} v = "k1" in D print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyTrue
(2)判断字典里面的value是否包含v1
D = {"k1":"v1","k2":"v2"} v = "v1" in D.values() print (v)C:\python35\python3.exe D:/pyproject/day12列表/dict-way.pyTrue
转载于:https://www.cnblogs.com/gouguoqilinux/p/9126832.html
python的dict()字典数据类型的方法详解以及案例使用相关推荐
- Python精讲:在Python中遍历字典的三大方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中遍历字典的三大方法详解>.本知识点主要内容有:使用字典对象的items()方法可以遍历字典的项和字典的&qu ...
- python的list()列表数据类型的方法详解
一.列表 列表的特征是中括号括起来的,逗号分隔每个元素,列表中的元素可以是数字或者字符串.列表.布尔值......等等所有类型都能放到列表里面,列表里面可以嵌套列表,可以无限嵌套 字符串的特征是双引号 ...
- python截图黑屏_对Python获取屏幕截图的4种方法详解
Python获取电脑截图有多种方式,具体如下: PIL中的ImageGrab模块 windows API PyQt pyautogui PIL中的ImageGrab模块 import time imp ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- python移动平均线绘图_对python pandas 画移动平均线的方法详解
数据文件 66001_.txt 内容格式: date,jz0,jz1,jz2,jz3,jz4,jz5 2012-12-28,0.9326,0.8835,1.0289,1.0027,1.1067,1.0 ...
- python中验证码连通域分割的方法详解
python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...
- python list遍历删除,对python list 遍历删除的正确方法详解
在遍历list的时候,删除符合条件的数据,可是总是报异常,代码如下: num_list = [1, 2, 3, 4, 5] print(num_list) for i in range(len(num ...
- python fileinput_python文件处理fileinput使用方法详解
这篇文章主要介绍了python文件处理fileinput使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 fileinput模块 ...
- python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...
- linux下crontab allow,【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍html crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供以后读取和执行.linux ...
最新文章
- el-tree设置某节点不能折叠_如何设置动画角色
- Linux--DHCP
- Spring之DataSource注入
- Java管理Cookie增删改查操作
- 本周 Github 精选:13 款炼丹利器,有开源工具包也有超大数据集
- 2018 年,你可以把论文投给这 13 场 AI 学术会议(附截稿日期)
- 蓝牙适配器 能同时接多少个设备_便携音箱也能有立体环绕声,JVC智能蓝牙颈挂音箱体验...
- lisp如何批量选中特定图层_图层管理的奥秘
- Android核心分析 之二方法论探讨之概念空间篇
- docker视频教程 百度云网盘
- 《信号与系统》(吴京)部分课后习题答案与解析——第四章(PART2)
- 关于什么是AndroidX(一)
- [Gym] - 100886K 2015-2016 Petrozavodsk Winter Training Camp, Saratov SU Contest K - Toll Roads
- java发送短信 短信平台
- Linux 必学的几个命令
- 6个不为人知的高质量APP推荐:知乎3万人点赞,2万人收藏!
- 抛物线的几何性质(传统几何法推导)
- 转:程序员常用不常见很难得的地址大全,博主很辛苦
- Android 中英文切换及遇到的问题
- 阿里云双11活动撸福利攻略云服务器篇 必买爆款
热门文章
- java最新 学习路线
- 实战开发,使用 Spring Session 与 Spring security 完成网站登录改造!!
- mysql limit报错_mysql limit 附近老是报错,求帮助!
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_36、SpringBoot整合mybatis之事务处理实战...
- Python3初级知识整理
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_14_注解_自定义注解_格式本质...
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第2节 反射_11_反射_案例
- 目标检测(三) Fast R-CNN
- [SDOI2010]代码拍卖会
- Maven运行时异常java.lang.UnsupportedClassVersionError的解决方案