python基础—dict字典
程序员文章站
2022-07-15 07:59:22
...
字典概述
1. 概述
字典本质上也是一个集合,是一个无序的集合,存储的时候以键值对(key-value)的方式来进行存储。它具有极快的查找速度
2. key的特性
- 字典中的key必须是唯一的
- 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在查找的时候需要从头向后挨个遍历元素,并且当数据量增大的时候,速度也会随着变慢