字典

字典是另一种可变容器模型,且可存储任意类型对象。

1.创建字典

字典由键和对应值成对组成。每个键与值之间用:隔开,每对之间逗号隔开。

每个键应当互不相同,值可以相同。若同时出现两个相同的键,则后面的那个会被记住。

键必须是不可变的。

dict1 = {'A': '', 'B': '', 'C': 3}

2.访问字典

dict1 = {'A': '', 'B': '', 'C': 3}
print(dict1['A'])
输出:1

如果访问字典中没有的键,则会报错。

3.修改字典

dict1 = {'A': '', 'B': '', 'C': 3}
dict1['C']=33#修改字典中的值
dict1['D']=4#若是字典中没有的,则自动添加到字典中
del dict1['A']#删除字典内容
print(dict1)
输出:
{'B': '', 'C': 33, 'D': 4}

4.字典内置函数及方法

4.1 fromkeys(seq,val)

fromkeys方法有两个参数,seq中的元素作为字典的键,val为字典所有键对应的初始值(注意是所有)。

返回值为一个新的字典。

seq=['A','B','C']
dict2=dict.fromkeys(seq)
dict3=dict.fromkeys(seq,1)
dict4=dict.fromkeys(seq,[1,2,3])
print(dict2,dict3,dict4)
输出:
{'A': None, 'B': None, 'C': None} {'A': 1, 'B': 1, 'C': 1} {'A': [1, 2, 3], 'B': [1, 2, 3], 'C': [1, 2, 3]}

4.2 keys,values,items

dict5={'A': '', 'B': '', 'C': '3'} 

for eachKey in dict5.keys(): 
  print(eachKey)
for eachValue in dict5.values():
  print(eachValue)
for eachItem in dict5.items():
  print(eachItem)
输出:
B C D
1 2 3
('A', '') ('B', '') ('C', '')

4.3 get(key, default=None)

get() 函数返回指定键的值,如果值不在字典中返回默认值。

dict6={'A': '', 'B': '', 'C': ''}
print(dict6.get('D'))
print(dict6.get('D',"不存在!"))
print(dict6.get('C',"不存在!"))
输出:
None
不存在!
3

4.4 clear()

clear()清空字典所有内容。建议全部使用clear(),否则字典内容还可以用其他方式访问到。

dict7={'A': '', 'B': '', 'C': ''}
dict7.clear()
print(dict7)
输出:{}

4.5 copy()

copy()返回一个字典的浅拷贝。

此处之区别浅拷贝和赋值,有关深拷贝的内容日后再谈。

拷贝父对象,不拷贝父对象内部的子对象。赋值就是对象的引用。

因此,拷贝后对原字典的内部的子对象(方括号[]内元素)进行操作时,浅拷贝内容会受操作影响而变化。

a={'A': [1,2], 'B': '', 'C': ''}
b=a.copy()
c=a
a['D']=4
print(a,b,c)
a['A'].append(3)
print(a,b,c)
输出:
{'A': [1, 2], 'B': '', 'C': '', 'D': 4} {'A': [1, 2], 'B': '', 'C': ''} {'A': [1, 2], 'B': '', 'C': '', 'D': 4}
{'A': [1, 2, 3], 'B': '', 'C': '', 'D': 4} {'A': [1, 2, 3], 'B': '', 'C': ''} {'A': [1, 2, 3], 'B': '', 'C': '', 'D': 4}

可以看到,对父对象a的子对象未改变时,b不会改变,但是c会跟着改变。当a的子对象改变时,b,c都会跟着改变。

4.6 pop()

dict8={'A': '', 'B': '', 'C': ''}
dict8.pop('B')
print(dict8)
输出:
{'A': '', 'C': ''}

4.7 popitem()

popitem()函数随机返回并删除字典中的一对键和值。

dict9={'A': '', 'B': '', 'C': ''}
dict9.popitem()
print(dict9)
输出:
{'A': '', 'B': ''}

4.8 setdefault()

setdefault(key, default=None) 函数和get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

dict10={'A': '', 'B': '', 'C': ''}
dict10.setdefault('D','')
print(dict10)
print(dict10.setdefault('C'))
输出:
{'A': '', 'B': '', 'C': '', 'D': ''}
3

4.9 update()

dict=update(dict1) 函数把字典dict1的键/值对更新到dict里。

dict11={'E':'','A':''}
dict10.update(dict11)
print(dict10)
输出:
{'A': '', 'B': '', 'C': '', 'D': '', 'E': ''}

Python学习——字典的更多相关文章

  1. Python学习--字典

    在Python中通过名字来引用值的数据结构称为映射(mapping).字典是Python中唯一内建(Python解释器本身支持,不需要import)的映射类型.字典中的值没有特殊的顺序,都存储在一个特 ...

  2. python学习——字典和集合

    一.字典 1)字典介绍 字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字.字符串.元组,这种不可变的结构类型也称之为映射.字典类型是Python中唯一內建的映射类型. 1)字典操作 &qu ...

  3. Python学习字典.基础三

    元组   Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组中要定义的元组中只有一个元素需要再元素后面加逗号,用来消除数学歧义.例 t=(1,)   ...

  4. Python学习————字典的增删改查

    增加:dic1['KEY'] = value -->若之前有KEY,则会覆盖.若没有KEY,则新增至尾处dic.setdefault('KEY',value/None) --->若之前有K ...

  5. Python学习-字典练习:简单通讯录

    功能要求: 查询联系人,输入姓名,可以查询当前通讯录里面的联系人信息,若联系人存在,则输出联系人信息,若不存在,则告知 插入联系人,可以向通讯录中新建联系人,若联系人已经存在,则询问是否修改联系人信息 ...

  6. Python学习基础笔记(全)

    换博客了,还是csdn好一些. Python学习基础笔记 1.Python学习-linux下Python3的安装 2.Python学习-数据类型.运算符.条件语句 3.Python学习-循环语句 4. ...

  7. python学习笔记整理——字典

    python学习笔记整理 数据结构--字典 无序的 {键:值} 对集合 用于查询的方法 len(d) Return the number of items in the dictionary d. 返 ...

  8. python学习笔记(一)元组,序列,字典

    python学习笔记(一)元组,序列,字典

  9. Python学习笔记——基础篇2【第三周】——计数器、有序字典、元组、单(双)向队列、深浅拷贝、函数、装饰器

    目录 1.Python计数器Counter 2.Python有序字典OrderredDict 3.Python默认字典default 4.python可命名元组namedtuple 5.Python双 ...

随机推荐

  1. Lexer and parser generators (ocamllex, ocamlyacc)

    Chapter 12 Lexer and parser generators (ocamllex, ocamlyacc) This chapter describes two program gene ...

  2. 如何在Java生态圈选择一个轻量级的RESTful框架?

    在微服务流行的今天,我们会从纵向和横向分解代码的逻辑,将一些独立的无状态的代码单元实现为微服务,可以将它们发布到一些分布式计算单元或者Docker中,并在性能需要的时候及时地创建更多的服务单元.微服务 ...

  3. Maven package打包webapp项目遇到的问题

    环境Java: JDK_1.7.0_79Eclipse: Mars(4.5.0)Maven: 3.3.3最近公司同事重构某Java web项目,完成之后发现部署启动总是不成功 Caused by: o ...

  4. Redis设置认证密码

    1.找到Redis里的redis.conf配置文件:搜素requirepass所在的行,格式为:requirepass password 2.redis-cli客户端登陆格式:redis-cli -a ...

  5. [Swift]Set(集)转换为Array(数组)

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. angularjs2 不同组件间的通信

    AngualrJs2官方方法是以@Input,@Output来实现组件间的相互传值,而且组件之间必须父子关系,下面给大家提供一个简单的方法,实现组件间的传值,不仅仅是父子组件,跨模块的组件也可以实现传 ...

  7. less新手入门(四)—— Mixin Guards

    八.Mixin Guards 有条件的 mixin 当您想要匹配表达式时,相对于简单的值或特性,Guards是有用的.如果您熟悉函数式编程,您可能已经遇到过它们. 为了尽可能地保持CSS的声明性质,在 ...

  8. 构造 Codeforces Round #Pi (Div. 2) B. Berland National Library

    题目传送门 /* 题意:给出一系列读者出行的记录,+表示一个读者进入,-表示一个读者离开,可能之前已经有读者在图书馆 构造:now记录当前图书馆人数,sz记录最小的容量,in数组标记进去的读者,分情况 ...

  9. 解决前后端分离的“两次请求”引出的Web服务器跨域请求访问问题的解决方案

    在前后端分离的项目中,前端和后端可能是在不同的服务器上,也可以是Docker上,那就意味着前端请求后端Restful接口时,存在跨域情况. 后端在做了通用的跨域资源共享CORS设置后,前端在做ajax ...

  10. Windows平台下Oracle实例启动过程中日志输出

    Windows平台下Oracle实例启动过程中日志输出记录. 路径:D:\app\Administrator\diag\rdbms\orcl\orcl\trace\alert_orcl.log 输出内 ...