欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python基础—dict字典

程序员文章站 2022-07-15 07:59:22
...
字典概述
1. 概述

字典本质上也是一个集合,是一个无序的集合,存储的时候以键值对(key-value)的方式来进行存储。它具有极快的查找速度

2. key的特性
  1. 字典中的key必须是唯一的
  2. key必须是不可变对象
    不可变对象:str,number,bool,None,tuple
    可变对象:list,dict,set
3. 字典的创建

字典的创建语法如下:

dict1 = {key:value,key2:value2,...,keyn:valuen}

创建一个成绩字典如下:

scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print(scoredict)
#{'张三': 89, '李四': 80, '王二': 20, '麻子': 67}
字典操作
1. 访问元素
dict1[key]
dict1.get(key)

使用上面两种方式都可以访问元素,使用get方法获取的时候,若key存在则返回value的值,当key不存在则返回None,不会报错;若使用key直接获取,当key不存在的时候会报错,如下:

scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print(scoredict.get("王二"))
print(scoredict.get("王三"))
print(scoredict["王二"])

运行结果如下:

20
None
20
2. 添加元素/更改元素
dict1[key] = value

注意:字典中key不能重复,一个key只能对应一个value,多次对一个key的value赋值,后面的值会把前面的值覆盖掉

scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
scoredict["韩梅梅"] = 90
print(scoredict)
scoredict["张三"] = 75
print(scoredict)

运行结果如下:

{'张三': 89, '李四': 80, '王二': 20, '麻子': 67, '韩梅梅': 90}
{'张三': 75, '李四': 80, '王二': 20, '麻子': 67, '韩梅梅': 90}
3. 删除元素
dict1.pop(key)

根据key删除对应的键值对,并且将对应的value值返回

scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print(scoredict.pop("麻子"))
print(scoredict)

运行结果如下:

67
{'张三': 89, '李四': 80, '王二': 20}
字典的遍历

这里可以使用for循环来进行字典的遍历

1. 获取key键
#方法一:
for key in dict1:
    print(key)
#方法二:
for key in dict1.keys()
	print(key)
2. 获取value值
for value in dist1.values():
    print(value)
3. 同时获取键和值
for key,value in dict1.items():
    print(key,value)

注意:字典是无序的,在内存中存储是无序的,因此无法通过下标来获取值

scoredict = {"张三":89,"李四":80,"王二":20,"麻子":67}
print("通过获取key键遍历字典:")
for key in scoredict:
    print("%s:%d"%(key,scoredict[key]),end=" ")
print()
print("通过同时获取键和值遍历字典:")
for key,value in scoredict.items():
    print("%s:%d"%(key,value),end=" ")

运行结果如下:

通过获取key键遍历字典:
张三:89 李四:80 王二:20 麻子:67 
通过同时获取键和值遍历字典:
张三:89 李四:80 王二:20 麻子:67 
dict与list的区别
1. 存储方式

字典存储的时候以键值对的方式存储,列表相当于只存储了字典中的key或value部分

2. 占用空间

dict需要占用大量的内存,内存浪费多,而list只相当于存储了字典的key或者value部分,并且数据是紧密排列的

3. 查询速度

dict的查找和插入的速度极快,不会随着key-value的增加而变慢,但是list在查找的时候需要从头向后挨个遍历元素,并且当数据量增大的时候,速度也会随着变慢