资讯专栏INFORMATION COLUMN

Python基础知识之字典

sewerganger / 1558人阅读

摘要:刘先生工程师已婚小三儿查无此人返回值输出返回值查无此人用于清空字典。刘先生工程师已婚输出刘先生工程师已婚刘先生工程师已婚还可以用循环遍历这三个方法来分别获得键值。

字典的表现形式为:{key:value},键和值之间用冒号分隔,每个键值对儿之间用逗号分隔,比如{‘name’:’超人’,’age’:500},要注意key的类型必须是不可变的类型,python对key进行哈希函数运算,根据计算结果决定value的存储地址,所以字典是无序存储的。字典的增删改查如下:

可以通过直接赋值的方式对字典进行修改,当指定的键不存在时则会在末尾增加一对儿键值

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
dic["age"] = 20
dic["lover"] = "小昭"
print(dic)
输出:
{"name": "刘先生", "age": 20, "job": "工程师", "marr": "已婚", "lover": "小昭"}

还可以使用setdefaultv(key,value)方法来增加键值对儿
如果key存在则不错任何改动,如果key不存在,则会在末尾添加新的键值,并且如果不给定value的话默认为None
一句话概括就是“有就不管他,没有就增加”,这在循环中可以利用这一点

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
dic.setdefault("name","超人")
dic.setdefault("lover","小姐姐")
print(dic)
输出:
{"name": "刘先生", "age": "39", "job": "工程师", "marr": "已婚", "lover": "小姐姐"}
删: pop() clear del

pop 删除指定的key对应的value,并且返回删除的value,如果key不存在则会报错。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
res = dic.pop("name")
print(dic,"返回值:",res)
输出:
{"age": "39", "job": "工程师", "marr": "已婚"} 返回值: 刘先生

在使用pop()时还可以增加一个参数来指定返回值,如果给定的key不存在则会返回给定的返回值.这种方式非常好用,可以防止key不存在时报错,如果存在则删除,不存在则返回指定的字符串。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
res = dic.pop("小三儿","查无此人")
print("返回值:",res)
输出:
返回值: 查无此人

clear 用于清空字典。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
dic.clear()
print(dic)
输出:
{}

del 用于删除指定的键值,如果只给出字典名字时则会删除整个字典对象

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
del dic["name"]
#del dic
print(dic)
输出:
{"age": "39", "job": "工程师", "marr": "已婚"}
改: 见“增” 查:

可以直接指定键来访问字典,有则返回对应的值,没有则报错:

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
a = dic["name"]
print(a)
输出:
刘先生

可以通过字典的三个方法keys(),values(),items()分别查询所有的键、值、键值对儿。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
a = dic.keys()
b = dic.values()
c = dic.items()
print("keys():",a)
print("values():",b)
print("items():",c)
输出:
keys(): dict_keys(["name", "age", "job", "marr"])
values(): dict_values(["刘先生", "39", "工程师", "已婚"])
items(): dict_items([("name", "刘先生"), ("age", "39"), ("job", "工程师"), ("marr", "已婚")])

还可以用for循环遍历这三个方法来分别获得键值。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
for k in dic.keys():
    print(k)
输出:
name
age
job
marr
dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
for v in dic.values():
    print(v)
输出:
刘先生
39
工程师
已婚
dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
for k,v in dic.items():
    print(k,v)
输出:
name 刘先生
age 39
job 工程师
marr 已婚
字典的其他方法

len(dict)
计算字典元素个数。
str(dict)
把字典专户为字符串,如:

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
a = str(dic)
import re
res = re.search(r"name",a)
print(res)
输出:
<_sre.SRE_Match object; span=(2, 6), match="name">

因为把dic转化为字符串并赋值给a,所以可以对a进行正则匹配
而如果直接对dic进行正则匹配则报错,因为dic不是字符串类型。

copy()
返回一个字典的浅复制

dict.fromkeys(seq,"value")
以序列seq中的元素作为字典的键,value为初始值 创建字典,如果不给参数value的话则每个键对应的值为Non,注意:这是一个“类方法”,所以使用时前面要加dict.

seq = ["a",1,"b"]
a = dict.fromkeys(seq,"value")
print(a)
输出:
{"a": "value", 1: "value", "b": "value"}

get(key, default=None)
返回指定键的值,如果键不存在则返回default值。

popitem()
删除并返回字典的一个键值对,如果字典为空则会报错。

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
res1 = dic.popitem()
res2 = dic.popitem()
res3 = dic.popitem()
print(res1,res2,res3,dic)
输出:
("marr", "已婚") ("job", "工程师") ("age", "39") {"name": "刘先生"}

update([other])
用键值对儿更新字典,如果键已经存在则会替换对应的值,参数为另外一个字典或者可迭代的键值对儿,比如:

dic = {"name":"刘先生","age":"39","job":"工程师","marr":"已婚"}
it = ((i,i**2) for i in range(1,4))
dic.update(it)
print(dic)
输出:
{"name": "刘先生", "age": "39", "job": "工程师", "marr": "已婚", 1: 1, 2: 4, 3: 9}
也可以用下面的方式指定键对应的值,比如
dic.update(name = "李小姐",age = 22)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42561.html

相关文章

  • Python基础(三)字典

    摘要:这种数据结构包含以下几种常见的操作向关联数组添加键值对从关联数组内删除键值对修改关联数组内的键值对根据已知的键寻找值字典问题是设计一种能够具备关联数组特性的数据结构。 定义 Python中有一个叫作dictionary的对象类型,翻译过来就是字典,用dict表示。 创建字典 创建空的字典 >>> mydict = {} >>> mydict {} >>> type(mydict) >...

    snifes 评论0 收藏0
  • python编程制作省市县名称字典

    摘要:准备字典文件为了更加准确的将失踪地址中的省市县三级单位提取出来,最好能够直接以省市县区的名称为字典,这样通过分词以上的词都能准确的切分出来。在网上搜索发现,根据最新的国家统计区位码之作的现成的字典文件,并没有。 在失踪儿童信息保存在本地之后,有一个字段是失踪地点,字段内容通常比较详细,具体到了失踪的街道或者村,我打算通过某种方法将失踪地点中的省、市、县/区三级地址提取出来。 确定分词技...

    darry 评论0 收藏0
  • Python基础到入门】Python基础语法篇——基本数据类型【文末送书】

    摘要:布尔值布尔值和布尔代数的表示完全一致,一个布尔值只有两种值的数据类型可以通过内置的函数查询,例如还可以用来判断和的区别在于不会认为子类是一种父类类型。会认为子类是一种父类类型。基本功能是进行成员关系测试和删除重复元素。 ...

    Winer 评论0 收藏0
  • Python基础(十一)数据存储

    摘要:默认为或者说,是以格式保存对象如果设置为或者,则以压缩的二进制格式保存对象。但是,要小心坑试图增加一个坑就在这里当试图修改一个已有键的值时没有报错,但是并没有修改成功。要填平这个坑,需要这样做多一个参数没有坑了还用循环一下 pickle pickle是标准库中的一个模块,在Python 2中还有一个cpickle,两者的区别就是后者更快。所以,下面操作中,不管是用import pick...

    Songlcy 评论0 收藏0
  • Python 实现 FTP 弱口令扫描器

    摘要:一项目说明项目简介本次实验通过使用实现一个弱口令扫描器开始,入门渗透测试技术,实验涉及协议原理,库的使用等知识点。找到密码并不会终止程序,而是会继续扫描其他主机的弱口令,直到所有的主机都扫描一遍。 showImg(https://segmentfault.com/img/bVz0PF); 一、项目说明 1.1 项目简介 本次实验通过使用 Python 实现一个 FTP 弱口令扫描器开始...

    cocopeak 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<