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': ()}
2.数字、字符串、布尔值、元组、都可以做key
info = {
2:"abc",
"k1":"def",
True:"",
(11,22):""
}
print (info)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'k1': 'def', True: '', 2: 'abc', (11, 22): ''}
3.列表和字典都不能作为字典的key
(1)列表不能作为字典的key
info = {
2:"abc",
"k1":"def",
True:"",
[11,22]:""
}
TypeError: unhashable type: 'list'
(2)字典不能作为字典的key
info = {
2:"abc",
"k1":"def",
True:"",
{"k3":"v3"}:""
}
TypeError: unhashable type: 'dict'
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.py
18
比如想要拿到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.py
99999
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'}]
拿到列表里面的这个字典之后,要想取到元组里面的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.py 11
合起来就是下面这
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.py
11
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)}
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)}
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.py
k1
3
k3
k4
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.py
dict_keys(['k1', 3, 'k4', 'k3'])
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.py
99999
[11, [], (), 22, 33, {'kk3': (11, 22), 'kk2': 'vv2', 'kk1': 'vv1'}]
(11, 22, 33, 44)
18
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.py
k4 (11, 22, 33, 44)
k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk3': (11, 22), 'kk1': 'vv1'}]
3 99999
k1 18
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.py
k1 18
k4 (11, 22, 33, 44)
3 99999
k3 [11, [], (), 22, 33, {'kk2': 'vv2', 'kk1': 'vv1', 'kk3': (11, 22)}]
二、dict字典的方法详解
1、clear(self)
D.clear() -> None. Remove all items from D.
清空字典
D = {"":"aa","":"bb","":"cc"}
v = D.clear()
print (v)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
None
2. copy(self) 浅拷贝
D = {"":"aa","":"bb","":"cc"}
v = D.copy()
print (v)
print (D)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'': 'bb', '': 'aa', '': 'cc'}
{'': 'bb', '': 'aa', '': 'cc'}
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","","woai"],123)
print (v) C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py {'woai': 123, '': 123, 'name': 123}
第一个参数是元组的方式
v = dict.fromkeys(("what","","woai"),123)
print (v)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'woai': 123, '': 123, 'what': 123}
第一个参数是字符串的方式
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}
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.py
v1
当要取的这个key不存在时,可以指定一个返回值,默认是None
D = {
"k1":"v1",
"k2":"v2"
}
v = D.get("k3")
print(v)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
None
当要取的这个key不存在时,指定一个固定的返回值
D = {
"k1":"v1",
"k2":"v2"
}
v = D.get("k3","")
print(v)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
000
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.py
k2
k1
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.py
v2
v1
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","")
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":"","k3":""})
print (D)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
{'k3': '', 'k2': 'v2', 'k1': ''}
第二种写法:
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.py
True
(2)判断字典里面的value是否包含v1
D = {
"k1":"v1",
"k2":"v2"
}
v = "v1" in D.values()
print (v)
C:\python35\python3.exe D:/pyproject/day12列表/dict-way.py
True
python的dict()字典数据类型的方法详解以及案例使用的更多相关文章
- python的list()列表数据类型的方法详解
一.列表 列表的特征是中括号括起来的,逗号分隔每个元素,列表中的元素可以是数字或者字符串.列表.布尔值......等等所有类型都能放到列表里面,列表里面可以嵌套列表,可以无限嵌套 字符串的特征是双引号 ...
- Python数据类型及其方法详解
Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知 ...
- python的dict,set,list,tuple应用详解
python的dict,set,list,tuple应用详解 本文深入剖析了python中dict,set,list,tuple应用及对应示例,有助于读者对其概念及原理的掌握.具体如下: 1.字典(d ...
- Python调用C/C++动态链接库的方法详解
Python调用C/C++动态链接库的方法详解 投稿:shichen2014 这篇文章主要介绍了Python调用C/C++动态链接库的方法,需要的朋友可以参考下 本文以实例讲解了Python调用C/C ...
- Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)
Python 在子类中调用父类方法详解(单继承.多层继承.多重继承) by:授客 QQ:1033553122 测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...
- python中验证码连通域分割的方法详解
python中验证码连通域分割的方法详解 这篇文章主要给大家介绍了关于python中验证码连通域分割的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需 ...
- 【Python】Linux crontab定时任务配置方法(详解)
CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行. cron 系统调度进程. 可以使用它在 ...
- Python_元组、字典内建方法详解
目录 目录 前言 软件环境 元组Tuple count 查询一个元素在Tuple中的数量 index 查询元素在Tuple中的索引号 元组的遍历 字典Dictionary 创建一个字典对象 简单的创建 ...
- python的str()字符串类型的方法详解
字符串一旦创建,不可修改,一旦修改或者拼接,都会造成重新生成字符串,因为内存存数据是一个挨着一个存的,如果增加一个字符串的话,之前的老位置只有一个地方,不够,这是原理性的东西,在其他语言里面也一样 7 ...
随机推荐
- /etc/profile不生效问题
http://blog.csdn.net/cuker919/article/details/54178611
- 利用原生Javascript实现计算器(未完待续)
这里,将记录我升级四则运算v1.2的整个过程. 环境检测,杨说检测环境也是可以高兴到手舞足蹈的一件事. 为了实现自动化,Testing,查阅相关资料,我这里使用了node(这里为了npm).yoema ...
- Final发布中间产物
目录 ❶版本控制 ❷软件功能说明书 ❸WBS ❹PSP 一.版本控制 ①Git地址:https://git.coding.net/tianjiping/Android-tianjiping.git ② ...
- delphi 图像处理 图像左旋右旋
procedure TDR_QM_ZP_Form.btn_ZXClick(Sender: TObject); //图像左旋 begin screen.Cursor := crhourglass; my ...
- Task 6.2冲刺会议六 /2015-5-19
今天主要写的是登陆界面,用户状态,历史登录信息,默认用户等等.由于大部分时间都是把代码组合拳起来的过程,所以总会出现各种bug,有好大一部分不会修复.明天要继续这一部分还有熟悉一下聊天的主界面.
- flownet2.0 caffe anaconda2 编译安装
1. 下载flownet2.0源码到指定目录 cd /home/zzq/saliency_models/deep_optical_flow git clone https://github.com/l ...
- <s:action>的一些用法
Action标签,顾名思义,是用来调用Action的标签,在JSP中页面中,可以具体指定某一命名空间中的某一Action.而标签的主体用于显示及渲染Actionr的处理结果. action标签有如下几 ...
- 用JAVA制作微型操作系统4月23日情况
弄好了一个自认为十分精美的界面,但本想着昨天就在开始按钮上先套入控制jp222面板上的jb2标签上的时间更新,这按钮起到开始线程的作用(我认为按钮应该可以通过t.start()来触发线程,结果不知为什 ...
- 【Coursera】主成分分析
一.问题 主方向的概念是什么?为什么降低维度的方法是使方差最大化? 假设某两个特征之间成线性关系,在二维平面上的表示就是数据点呈线性分布,那么可以通过将数据在主方向上进行投影,得到一个一维的数据,这个 ...
- Alpha版本冲刺(九)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...