python基础 10.字典
字典
什么是字典
python内置的数据结构之一,与列表一样是可变序列
以键值对的方式存储数据,字典是一个无序列表
字典示意图:
字典的特点
战斗中所有元素都是一个key-value对,key不允许重复,value可以重复
字典中的元素是无序的
字典中的key必须是不可变对象
字典也可以根据需要动态的伸缩
字典会浪费较大的内存,是一种使用空间换时间的数据结构
# 字典的特点
dic = {'name': '张三', 'name': '李四'}
print(dic) # {'name': '李四'},key值重复时会出现覆盖的情况
字典的实现原理
字典的实现原理与查字典类似,查字典是先根据不受或拼音查找相应的页码,python中字典是根据key查找value所在位置
字典创建删除
创建:
最常用方式:使用花括号
dic = {'张三': 100, '李四': 98, '王五': 90}
使用内置函数dict()
dict(name='jack', age=18)
空字典
nulldic = {}
字典的查询操作
字典中元素的获取
用[]获取:firstdic['张三']
用get()方法获取:firstdic.get('张三')
# 查找字典中元素
firstdic = {'张三': 100, '李四': 98, '王五': 90}
seconddic = dict(name='jack', age=18)
print(seconddic['name'])
print(firstdic.get('张三'))
print(firstdic.get('赵六')) # 字典内不存在该数据时,则返回None
print(firstdic.get('赵六', 99)) # 99是查找字典内不存在的元素时提供的一个默认值
print(firstdic['赵六']) # 字典内不存在该数据时,则出现以下错误:
# Traceback (most recent call last):
# File "D:\PycharmProjects\pystu\demo.py", line 522, in <module>
# print(firstdic['赵六'])
# KeyError: '赵六'
两种获取方式的区别
[]如果字典中不存在指定的key,抛出keyError
get()方法取值,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便制定的key不存在时返回
字典元素的常用操作
key的判断
in : 指定的key在字典中存在则返回True
not in : 指定的key在字典中不存在则返回True
# 字典的增删改
firstdic = {'张三': 100, '李四': 98, '王五': 90}
seconddic = dict(name='jack', age=18)
print('张三' in firstdic)
print('张三' not in firstdic)
print(firstdic)
字典元素的删除
del score[‘张三’]
del.clear()
# 字典元素的删除
firstdic = {'张三': 100, '李四': 98, '王五': 90}
seconddic = dict(name='jack', age=18)
del firstdic['李四'] # 删除字典中的李四
print(firstdic)
firstdic.clear() # 清空字典
print(firstdic)
字典元素的新增
firstdic['张三']=0
# 字典元素的新增
firstdic = {'张三': 100, '李四': 98, '王五': 90}
firstdic['钱七'] = 95 # 在字典中新增一条
print(firstdic)
字典视图
获取字典视图
|
keys()
|
获取字典中多所有的key
|
values()
|
获取字典中多所有的value
|
|
items()
|
获取字典中多所有key,value对
|
# 字典视图
firstdic = {'张三': 100, '李四': 98, '王五': 90}
seconddic = dict(name='jack', age=18)
print(firstdic.keys(), type(firstdic.keys()), list(firstdic.keys())) # list是讲座由的key组成的视图转成列表
print(seconddic.values(), type(seconddic.values()), list(seconddic.values()))
print(firstdic.items(), type(firstdic.items()), list(firstdic.items())) # 转换之后的列表元素是由元组组成
字典元素的遍历
# 字典元素的遍历
firstdic = {'张三': 100, '李四': 98, '王五': 90}
for i in firstdic:
print(i, firstdic[i], firstdic.get(i))
字典生成式
内置函数zip():用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回有这些元组组成的列表
items = ['Fruits', 'Books', 'Others']
prices = [10, 20, 30, 100]
d = {item: price for item, price in zip(items, prices)}
print(d)
注:如果两个列表元素数量不同,选择少的那个建组