一、字典的创建
- 使用花括号
scores={'张三':100,'李四':98,'王五':45}
- 使用内置函数dict()
dict(name='jack',age=20)
'''字典的创建方式'''
'''使用{}创建字典'''
scores={'张三':100,'李四':98,'王五':45}
print(scores)
print(type(scores))
'''第二种创建dict()'''
student=dict(name='jack',age=20)
print(student)
'''空字典'''
d={}
print(d)
二、字典的常用操作
- 字典中元素的获取
- []: scores['张三']
- get():scores.get('张三')
- []取值与使用get()取值的区别
- []如果字典中不存在指定的key,抛出KeyError异常
- get()方法去职,如果字典中不存在指定的key,并不会抛出KeyError而是返回None,可以通过参数设置默认的value,以便指定的key不存在时返回
scores={'张三':100,'李四':98,'王五':45}
'''第一种方式,使用[]'''
print(scores['张三'])
'''第二种方式,使用get()'''
print(scores.get('张三'))
print(scores.get('陈刘')) #None
print(scores.get('马奇',99)) #99是在查找‘马奇’所在walue不存在时,提供的默认值
- key的判断
in→指定的key在字典中存在返回True→‘张三’ in scores
not in→指定的key在字典中不存在返回True→‘Marry’ not in scores
- 字典元素的删除
del scores['张三']
- 字典元素的新增
scores['Jack']=90
'''key的判断'''
scores={'张三':100,'李四':98,'王五':45}
print('张三' in scores)
print('张三' not in scores)
del scores['张三']
print(scores)
scores.clear() #清空字典的元素
print(scores)
scores['马奇']=98 #新增
print(scores)
scores['马奇']=100 #修改
print(scores)
- 获取字典视图的三个方法
- keys()→获取字典中所有key
- values()→获取字典中所有value
- items()→获取字典中所有key,value对
scores={'张三':100,'李四':98,'王五':45}
#获取所有的key
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys)) #将所有的key组成的视图转成列表
#获取所有的values
values=scores.values()
print(values)
print(type(values))
print(list(values))
#获取所有的key-values对
items=scores.items()
print(items)
print(list(items)) #转换之后的列表元素是由元组组成
- 字典元素的遍历
for item in scores:
print(item)
scores={'张三':100,'李四':98,'王五':45}
#字典元素的遍历
for item in scores: #一定要记得加英文冒号!!!
print(item,scores[item],scores.get(item))
三、字典的特点
- 字典中的所有元素都是一个key-value对,key不允许重复,value可以重复
- 字典中的元素是无序的
- 字典中的key必须是不可变对象
- 字典也可以根据需要动态地伸缩
- 字典会浪费较大的内存,是一种使用空间换时间的数据结构
d={'name':'张三','name':'李四'}
print(d)
d={'name':'张三','2name':'张三'}
print(d)
lst=[10,20,30]
lst.insert(1,100)
print(lst) #字典不一样,字典是无序的
四、字典生成式
- 内置函数zip()
用于将可迭代(可以被for -in遍历)的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
items=['Fruits','Books','Others']
prices=[96,98,100,111,999]
d={item.upper():price for item,price in zip(items,prices)}
print(d)
五、什么是元组 (使用小括号定义)
- 元组:python内置的数据结构之一,是一个不可变序列
- 不可变序列与可变序列
- 不可变序列:字符串、元组;没有增、删、改的操作
- 可变序列:列表、字典;可以对 序列执行增、删、改操作,对象地址不发生更改
'''不可变序列 可变序列'''
'''可变序列 列表,字典'''
lst=[10,20,40]
print(id(lst))
lst.append(300)
print(id(lst))
'''不可变序列,字符串,元组'''
s='hello'
print(id(s))
s=s+'world'
print(id(s))
print(s)