一、字典dict:

相比列表list而言,列表list像一本书,如果要查书中的某一个内容,需要把书从前往后翻一遍,直到找到想要获取的东西;而字典dict,就像现实中的字典一样,通过查找特定的字或者词(键key),从而找到相对应的它的定义和解释(value值)

1. 字典的标志:{ }

2. 字典的定义:

字典由多个键key和与其相对应的值value,构成键-值对,键-值对也称为项item。每项中的键和值之间,用冒号(:)隔开,项之间用逗号(,)隔开。整个字典用一对大括号{ }括起来。空字典不包括任何项,由两个大括号组成——{}

  • 字典是python中唯一的内建的映射类型
  • 字典是无序的
  • 字典中的键key,是唯一的,值value不唯一。
  • 键key:可以是任何不可变类型,如:数字、字符串、元组。

3. 基本操作:增删改查:

(1) len(d):返回字典d中,项item(键值对)的数量

(2) 字典名[键名]:返回字典中键相应的值

(3) 增/改:字典名[键名] = 值

      • 如果键不存在,向字典中增加一项
      • 如果键存在,修改字典中的这一项

注意:字典和列表不同,字典是自动添加。即:即使起初,字典的键并不存在,也可以为他赋值,这样字典就会建立新的项,而无需使用append方法。

x= []
x[42] = 'football'
>>报错

x = {}
x [42] = 'football'
x
>>{42: 'football'}

(4) 删除:del 字典名[键名] ——删除该键名的项

(5) 查询:键名 in 字典名:键key是否在字典中。——检查成员资格。

注意:检查的是键,而不是值。

(6) dict函数:

dict()函数用于创建一个字典

 #创建一个空字典
 >>>dict()
 {}

 5 #通过关键字,创建字典
 >>>dict('name' = 'tom', 'age' = 20)
 {name: "tom", age: 20}

 #通过一个可迭代对象,创建字典
 >>>dict(('name', 'tom'), ('age', 20))

4. 字典方法:

(1) clear():

用于:清除字典中的所有项,没有返回值(返回None)

eg:

>>>dict2 = {}
>>>dict1['age'] = 20
>>>dict
['age': 20]
>>> d = dict2.clear()
>>>dict2
{}
>>>d
None

(2) copy():

返回:字典的一个浅复制

>>> x = {'one': 1, 'two': 2, 'three': [1, 2, 3]}
>>> y = x.cpoy()
>>> y
{'one': 1, 'two': 2, 'three': [1, 2, 3]}
>>> y['one'] = 000
>>> y
{'one': 000, 'two': 2, 'three': [1, 2, 3]}
>>> x
{'one': 1, 'two': 2, 'three': [1, 2, 3]}
>>> del y['two']
>>> y
{'one': 000,  'three': [1, 2, 3]}
>>> x
{'one': 1, 'two': 2, 'three': [1, 2, 3]}
>>> y['three'][1] = 5000
>>> y
{'one': 000,  'three': [1, 5000, 3]}
>>> x
{'one': 1, 'two': 2, 'three': [1, 5000, 3]}

可以看到,直接对字典内的“一级元素”,进行操作时,对副本y操作,原始字典x不受影响。但是当对“元素的元素”进行操作时,操作副本y,原始字典x也会发生改变。

所以说,浅拷贝,不是一个完完全全独立的副本。

避免的方法是,使用深拷贝(deep copy),需要调用copy模块的deepcopy函数。

直接赋值、浅拷贝、深拷贝的区别:只有涉及对象嵌套时,有区别

a、直接赋值:b = a: 赋值引用,a 和 b 都指向同一个对象。

b、浅拷贝:b = a.copy(): a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

c、深拷贝:b = copy.deepcopy(a): a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

3. fromkeys(seq, val):

以序列seq中的元素,作为字典中的键,以val作为每个键对应的初始值,val默认值是None

>>> dict.fromkeys([1, 2, 3])
{1: None, 2: None, 3: None}
>>> dict.fromkeys([1, 2, 3], ('val'))
{1: 'val', 2: "val", 3: 'val'}

4. get(key, default = None):

获取字典中,指定键key的值value,如果该键key,不存在。则返回默认值

>>> x = {1: 'one', 2: 'two', 3: 'three'}
>>> x.get(1)
'one'
>>> x.get(5)
None
>>> x.get(5, '不存在')
'不存在'

5. key in dict

键名 in 字典名

判断键key,是否在字典中,是,返回True;否则:返回False

>>> d = {1: "A", 2: "B", 3: "C"}
>>> 1 in d
True
>>> 5 in d
False

6. items():

items()方法,返回字典中的所有项(键-值对),返回的是一个迭代器对象,使用list()函数,可以使之变为列表list,以列表的方式返回,列表中的每一项都表示为(键,值)的形式,项在返回时没有遵循特定的顺序。

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.items()
dict_items([(1, "A"), (2, "B"), (3, "C")])  #迭代器对象
>>> list(d.items())
[(1, "A"), (2, "B"), (3, "C")]

7. keys():

keys()方法,将字典中的键key,以返回,返回的是一个迭代器,使用list()函数,可以使之变为列表list

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.keys()
dict_keys([1, 2, 3])  #迭代器对象
>>> list(d.keys())
[1, 2, 3]

8. values():

values()方法,将字典中的键value,以返回,返回的是一个迭代器,使用list()函数,可以使之变为列表list

>>> d = {1:"A", 2: "B", 3: "C"}
>>> d.values()
dict_values(["A", "B", "C"])  #迭代器对象
>>> list(d.values())
["A", "B", "C"]

9. pop(key):

pop(key),移出指定的键key的键值对,然后方法返回指定的键key的值value。

>>>  d = {1:"A", 2: "B", 3: "C"}
>>>  d.pop(1)
"A"            #返回了pop中的键,对应的value值
>>> d
{2: "B", 3: "C"}       #pop中对应的键值对,被从字典中删除了

10. popitem():

字典中的 popitem()方法和列表list中的pop()方法相似,不过,由于字典是无序的,所以:popitem()弹出的是随机的项item

11. setdefault(key, default = None):

a、setdefault() 方法和 get()类似,:

      • 如果键key存在于字典中,则返回对于的值value
      • 如果键不已经存在于字典中,则返回:参数default默认值,并且将会添加键key并将值value设为默认值default。

b、参数含义:

      • key: 查找的键的值
      • default:键key不存在于字典中时,设置到默认值default

c、返回值:

如果 key 在 字典中,返回对应的值。如果不在字典中,则插入 key 及设置的默认值 default,并返回 default ,default 默认值为 None

>>> dict1 = {'Name': 'Runoob', 'Age': 7}
>>> dict1.setdefault("Age",None)
7
>>> dict1
 {'Name': 'Runoob', 'Age': 7}

>>> dict1.setdefault("Sex")
None
>>> dict1
 {'Name': 'Runoob', 'Age': 7, "Sex": None}
>>> dict1.setdefault("address", "unknow")
"unknow"
>>> dict1
 {'Name': 'Runoob', 'Age': 7, "Sex": None, "address": unkown)

12. update():

update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。

>>> dict = {'Name': 'Runoob', 'Age': 7}
>>> dict2 = {'Sex': 'female' }
>>> dict.update(dict2)
>>> dict
{'Name': 'Runoob', 'Age': 7, 'Sex': 'female' }

二、集合set:

集合(set)是一个无序的不重复元素序列。

三、条件判断:

1. if判断结构,一般形式:

if condition_1:
     statement_block_1
elif condition_2:
     statement_block_2
else:
     statement_block_3

——如果condition_1为True,则执行statement_block_1代码块;

——如果condition_2为False,则判断condition_2;

——如果condition_2为True,则执行statement_block_2代码块;

——如果condition_2为False,则执行statement_block_3代码块;

注意:

  1. 每个条件后面,都要有冒号(:)
  2. 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  3. if语句可以嵌套

2. 常用的操作符:

逻辑操作符:and、or、not

注意:逻辑操作符,执行的是短路逻辑。

即:

(1)if conditon_A and condition_B:

先看conditon_A 是True还是False,如果是False,就直接返回False,不用再去看condition_B

(2)if conditon_A or condition_B:

同理,先看conditon_A是True还是False,如果是True,就直接返回True,不用再去判断condition_B

3.三目运算符:

4.关于布尔值:

四、循环:

1.while循环:

while 条件表达式:
       代码块

(1) 无限循环:

可以通过设置条件表达式永远不为 false 来实现无限循环,无限循环在服务器上客户端的实时请求非常有用。

可以使用 CTRL+C 来退出当前的无限循环。

(2) while循环使用else语句:

while … else 在条件语句为 false 时执行 else 的语句块:

while 条件表达式:
  代码块1
else:
  代码块2

(3) 简单while语句:

当while循环的循环体中只有一条语句时,while循环可以简写成一句话

while 条件表达式: 循环体代码块

eg:

flag = 1
while (flag): print("hello world")

2.for循环:

for <variable> in <sequence>:
    <statements_1>
else:
    <statements_2>

(1) range()函数:

rang(下限,上限,步长)

下限默认为0;步长默认为1

range()函数会一次性创建整个序列,它包括下限,不包括上限。

>>> range(1, 7, 2)
[1, 3, 5]

3.break语句:

直接跳出当前层的循环

4. continue语句:

continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

5.循环的else语句:

循环语句可以有 else 子句,

  • 它在穷尽列表(以for循环)时,被执行
  • 条件变为 false (以while循环)导致循环终止时被执行
  • 但循环被break终止时不执行。

6. pass语句:

pass语句是空语句,不做任何作用,只用来占位

python基础训练营03——字典、集合、判断、循环的更多相关文章

  1. Python基础2 列表 字典 集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  2. 『Python基础-10』字典

    # 『Python基础-10』字典 目录: 1.字典基本概念 2.字典键(key)的特性 3.字典的创建 4-7.字典的增删改查 8.遍历字典 1. 字典的基本概念 字典一种key - value 的 ...

  3. Python基础知识(五)------字典

    Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型 ...

  4. python基础(二)条件判断、循环、格式化输出

    继续上一篇,今天主要总结一下条件判断.循环.格式化输出 一.条件判断 python中条件判断使用if else来判断,多分支的话使用if elif ... else,也就是如果怎么怎么样就怎么怎么样, ...

  5. Python基础数据类型之字典

      基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...

  6. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  7. python 基础学习(字典对象,set对象)

    1.dict 字典对象 a.定义对象 d={'a':14,'b':12}b.通过key获取value d['a'] 方法1.判断key是否存在 if 'a' in d: d['a']方法2:通过用ge ...

  8. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  9. Python基础(6)--条件、循环

    本文的主要内容是 Python 的条件和循环语句以及与它们相关的部分. 我们会深入探讨if, while, for以及与他们相搭配的else,elif,break,continue和pass语句. 本 ...

随机推荐

  1. AngularJS 三 控制器和事件

    AngularJS控制器: ngularJS中的控制器是一个使用 $ scope 对象维护应用程序数据和行为的JavaScript函数. 您可以将属性和方法附加到控制器函数内的 $ scope  对象 ...

  2. android(eclipse)新手常见问题总结(一)

    1:jdk无法更新   进入工具里面手动获取镜像资源 并且改为强制 2:报错:This version of the rendering library is more recent than you ...

  3. Jedis连接redis客户端

    1 单点的redis利用jedis客户端连接 如何连接 //1 利用jedis连接对象操作redis @Test public void test01(){ //构造一个具有连接信息的jedis对象 ...

  4. jzoj100029. 【NOIP2017提高A组模拟7.8】陪审团(贪心,排序)

    Description 陪审团制度历来是司法研究中的一个热议话题,由于陪审团的成员组成会对案件最终的结果产生巨大的影响,诉讼双方往往围绕陪审团由哪些人组成这一议题激烈争夺. 小 W 提出了一个甲乙双方 ...

  5. 创建私有CA并签发证书

    一.创建私有CA 1.创建所需要的文件 2.创建私有密钥 3.CA自签证书 -new: 生成新证书签署请求:               -x509: 专用于CA生成自签证书:不自签的时候不要加该选项 ...

  6. jQuery 切换图片(图标)效果

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. React中的全选反选问题

    全选反选问题 1.在state里维护一个数组,例如showArr:[] 2.绑定点击事件的时候将当前这个当选按钮的index加进来 <span className='arrow' onClick ...

  8. web3.js_1.x.x--API(一)event/Constant/deploy/options

    /* 事件是使用EVM日志内置功能的方便工具,在DAPP的接口中,它可以反过来调用Javascript的监听事件的回调. 事件在合约中可被继承.当被调用时,会触发参数存储到交易的日志中(一种区块链上的 ...

  9. 如何解决thinkphp5中验证码常见问题?

    对于thinkphp如何实现验证码,我这里就不介绍了.直接看之前的文章 http://www.cnblogs.com/qqblog/p/6639419.html.下面,我能想出来的是,我自己在开发过程 ...

  10. jquery如何获取对应表单元素?

    问题描述:我页面中有这样多个表单,我都是这个定义的,当我点击确定按钮时,此时能够获得相对应的表单对象,我该怎么获取到他的两个值呢? 解决方案: 页面元素 <form id="form1 ...