快好知 kuaihz订阅观点

 

python数据类型串讲(下)

python数据类型串讲(下)

在上一篇文章中讨论了python标准类型中序列的两种:列表和元祖,下面我们继续介绍python的第二种标准类型:字典(dict)。

1、字典dict

顾名思义,字典就像我们日常生活中使用的新华字典,其作用在于根据索引(拼音或偏旁)快速查找到所需内容,而python中的字典也是如此,python中字典的索引称为“键”(key),由python中不可变的数据类型(如字符串、数值等)构成,具有固定(不可变)、唯一(不可重复)性;python中字典的内容称为“值”,其可以为python中的任意标准数据类型的一种或多种。字典中由“键”和“值”构成的数据结构称为“键值对”,每个“键值对”之间用逗号(,)分隔开,其中键和值分别用冒号(:)分隔,同时整个字典用花括号({})括起来,如下图所示:

 

1.1 字典的创建

1.1.1 直接创建

 根据上述字典的结构,可用花括号{ }直接创建一个字典

1/9

# 用{}直接创建

<<< x={"a":1,"b":2,"c":3}

<<< print(x)

{"a": 1,"b": 2,"c": 3}

1.1.2 通过内置函数

•            传入参数为键值对

              通过传入类似"a=1"形式的键值对创建,注意这里的键只能是字符串类型,且不需要加引号。

# 通过内置函数dict()创建

<<< x=dict(a=1,b=2,c=3)

<<< x

{"a": 1,"b": 2,"c": 3}

•            传入参数为元祖/列表

              通过传入一序列包含两个值的元祖或列表创建,第一个参数为键,第二个参数为值。需要注意的是,当传入的参数为元祖时,元组内部的键值对个数要大于或等于2.

# 这四种方式创建的效果都一样

<<< dict((("a",1),("b",2)))

{"a": 1,"b": 2}

<<< dict((["a",1],["b",2]))

{"a": 1,"b": 2}

<<< dict([("a",1),("b",2)])

{"a": 1,"b": 2}

<<< dict([["a",1],["b",2]])

{"a": 1,"b": 2}

 小技巧:可通过dict()结合python另一个内置函数zip()来快速创建字典,先用映射函数zip()将两个长度相等的列表或元祖,根据对应位置压缩为一个包含n个元祖的列表(n为列表或元祖中元素的个数),再用python的内置函数dict()将其转化为字典

# 通过dict()和zip()创建

<<< keys=("a","b","c")

<<< values=(1,2,3)

<<< dict(zip(keys,values))

{"a": 1,"b": 2,"c": 3}

1.2 字典元素的增删查改

 先创建一个示例字典

# 示例

<<< names=("Amy","CC","Mick")

<<< ages=(18,22,23)

<<< dic=dict(zip(names,ages))

<<< dic

{"Amy": 18,"CC": 22,"Mick": 23}

2/9

1.2.1 元素的查找

 python提供了两种方式查找字典的元素,第一种是以键(key)作为索引值,用中括号[ ]进行索引,与前面列表的索引用法一致;第二种通过内置函数get(),第一个参数为key,第二个参数为报错提示,默认为None,如果在字典中查找到key,则返回key对应的值,如果查找不到key,则返回第二个参数的值。

# 用[]查找key为’CC‘对应的values

<<< dic["CC"]22:

# 用内置函数get()查找key为’CC‘对应的values

<<< dic.get("CC")22:# 用get()设置查找不到返回字符’Error!‘

<<< dic.get("Cc","Error!")

"Error!"

 同时,也可以通过python关键字in判断某个元素是否存在于字典中,存在返回True,否则返回False。

# 用关键字in判断元素存在与否

<<< "Cc"indic

False

<<< "CC"indic

True

1.2.2 元素的修改

 与列表中修改元素的方法一致,字典也可以通过直接对查找出来的values进行赋值操作,从而达到修改元素值的效果。

# 将字典dic中索引为’Cc‘对应的值改为24

<<< dic["CC"]=24

<<< dic

{"Amy": 18,"CC": 24,"Mick": 23}

1.2.3 元素的增加

 在上一步的操作中,当输入的key不存在于字典中时,则会新增加一对键值对,如果没有输入values,则默认values为None。

# 新增一对键值对:键为’Jem‘,值为’32‘

<<< dic["Jem"]=32

<<< dic

{"Amy": 18,"CC": 24,"Mick": 23,"Jem": 32}

1.2.4 元素的删除

•            pop()

              语法:dict.pop(key,[value])

3/9

              字典的pop()方法用于对原数组删除指定的key及其对应的values,并返回该键值对,第一个参数为需要删除的key,第二个参数为不存在该key时返回的值。

# 删除dic中为’Jem‘的key及其value,并返回该键值对

<<< dic.pop("Jem")32:<<< dic

{"Amy": 18,"CC": 24,"Mick": 23}

# 设置pop方法删除元素时若差找不到返回’Rrror!‘

<<< dic.pop("Jam","Eoror!")

"Eoror!"

 这里需要注意与列表中的pop方法区分开,列表中的 pop()方法用于删除指定index索引处的value,若没有输入参数index,则会默认删除最后一个元素。

•            clear()

              语法:dict.clear( )

              字典的clear()方法用于对原字典清除所有的键值对数据,无返回值。

# 将dic里的所有数据删除

<<< dic.clear()

<<< dic

{}

•            del

              语法:del dict[key]

              del的用法与pop相似,根据给定的key删除键值对,但与pop()方法不同,del没有返回值,若key不存在,则会报KeyError错误。

# 用python关键字del删除指定键值对

<<< deldic["CC"]

<<< dic

{"Amy": 18,"Mick": 23}

1.3 字典的常用方法

1.3.1 dict.keys()

 获取字典键值对中的键key

# 获取字典dic键值对中的键key

<<< dic.keys()

dict_keys(["Amy", "CC","Mick"])

<<< [i fori in dic.keys()]

["Amy", "CC","Mick"]

4/9

1.3.2 dict.values()

 获取字典键值对中的值values

# 获取字典dic键值对中的值values

<<< dic.values()

dict_values([18, 22,23])

<<< [i fori in dic.values()]

[18, 22,23]

1.3.3 len(dict)

 计算字典中元素的个数

# 计算字典dic中元素的个数

<<< dic

{"Amy": 18,"CC": 22,"Mick": 23}

<<< len(dic)3:

1.3.4 dict.items()

 以列表的形式返回可遍历的(键,值)元祖

# 以列表的形式返回字典dic

<<< dict.items()

dict_items([("Amy", 18),("CC", 22),("Mick", 23)])

 总结:字典的特点在于其无序性,与序列不同,字典属于python的映射类型,其内部的元素是无序的,不能通过其位置来进行索引或切片,而是通过字典的键(key)进行映射查找;同时,正是这种键值对的结构,使字典查找元素的速度提升很多,不需要像列表那样遍历列表内每个元素,list越长,耗时越长。

2、集合set

 python中第三种数据类型的“容器”是集合(set),集合与字典(dict)相类似,其内部存储的元素是无序的,不可以通过位置去进行索引等相关操作。与字典不同的是,集合中只有key,没有value,key可以由python中不可变的数据类型(如字符串、数值等)构成,因此集合中的元素具有无序唯一性。

 集合的结构也和字典相类似,其内部元素用花括号{}括起来,如下图所示:

5/9

本站资源来自互联网,仅供学习,如有侵权,请通知删除,敬请谅解!
搜索建议:python数据类型串讲  串讲  串讲词条  类型  类型词条  数据  数据词条  python  python词条  
综合

 常见网络攻击的手段与防范措施

既然网络安全的本质是通过防御的手段进行安全防护,那么对于常见的攻击方式采取对应的防守方式,可以有效起到保护网络的目的。网络安全防护网络攻击阶段主要有信息侦查、载...(展开)