字典是可变容器,可存储任意类型对象
字典以键(key)-值(value)对的形式进行映射,键值对用冒号分割,对之间用逗号分割
d = {key1 : value1, key2 : value2, key3 : value3 }
字典的数据是无序的
字典的键只能用不可变类型,且不能重复
字典的数据用键进行索引,不能用整数进行索引
'''
字典是可以修改数据的数据容器
列表的元素保存在对应的下标处,字典没有按顺序的下标
字典的下标是自己写的,所以字典的元素可以重复
'''
dict1={}
print(dict1)
dict1={"name":"zhl","age":21,"sex":"male"}
print(dict1)
#字典中保存的数据可以是其他的可迭代对象
dict1 = {"name":"zhl", "age":21, "info":{"sex":"male", "name":"zhl"}}
{}
{'name': 'zhl', 'age': 21, 'sex': 'male'}
{'name': 'zhl', 'age': 21, 'info': {'sex': 'male', 'name': 'zhl'}}
存在问题的写法
#存在问题的写法
#字典的键不能重名,键也不能使用可变的数据
x4 = {"name": "zhl", "age": 21, "name": "wh"}
print(x4)
{'name': 'wh', 'age': 21}
可见只会显示后面的一个
#键也不能使用可变的数据
x5={[10,20]:"zhl"}
#键也不能使用可变的数据
x5={{"zhl":12}:"zhl"}
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[17], line 7
4 print(x4)
6 #键也不能使用可变的数据
----> 7 x5={[10,20]:"zhl"}
TypeError: unhashable type: 'list'
字典操作有,增,删,改,查
改
x={"name":"zhl","age":21,"sex":"male"}
x["age"]=100#已经有这个键,修改,如果没有,就是添加新数据
print(x)
#如果没有,就是添加新数据
x["aihao"]="youyong"
print(x)
#可以添加没有的,但不可以取没有的值
{'name': 'zhl', 'age': 100, 'sex': 'male'}
{'name': 'zhl', 'age': 100, 'sex': 'male', 'aihao': 'youyong'}
in not in
#in not in
x={"name":"zhl","age":21,"sex":"male"}
print("name" in x)#判断字典的键在字典中
print("name" not in x)#判断字典的键不在字典中
print("name" in x.keys())#判断字典的键是否为键
print("name" in x.values())#判断字典的值是否为值
True
False
True
False
删
x={"name":"zhl","age":21,"sex":"male"}
del x["name"]
print(x)
{'age': 21, 'sex': 'male'}
清空字典
dict1 = {'name':'张三','age':18,'sex':'男'}
dict1.clear#清空字典
print(dict1)
复制字典
dict1 = {'name':'张三','age':18,'sex':'男'}
dict1.copy()#复制字典
print(dict1)
dict1 = {'name':'张三','age':18,'sex':'男'}
dict1.copy()#复制字典
dict2 = dict1.copy()
print("dict1:",dict1)
print("dict2:",dict2)
print(id(dict1),id(dict2))
dict1: {'name': '张三', 'age': 18, 'sex': '男'}
dict2: {'name': '张三', 'age': 18, 'sex': '男'}
2858062203072 2858062215552
获取键值对
dict1 = {'name':'张三','age':18,'sex':'男'}
d2=dict1.get("name",None)#获取键值对
print(d2)
张三
返回字典所有键值对
dict1 = {'name':'张三','age':18,'sex':'男'}
dict1.items()#返回字典所有键值对
print(dict1.items())
for k,v in dict1.items():
print(k,v)
dict_items([('name', '张三'), ('age', 18), ('sex', '男')])
name 张三
age 18
sex 男
返回所有的键
dict1 = {'name':'张三','age':18,'sex':'男'}
dict1.keys()#返回字典所有键
print(dict1.keys())
dict_keys(['name', 'age', 'sex'])
更新字典
dict1 = {'name':'张三','age':18,'sex':'男'}
dict2 = {'name':'李四','age':16,}
dict1.update(dict2)#更新字典
print(dict1)
{'name': '李四', 'age': 16, 'sex': '男'}
删除字典键值对
dict1 = {'name':'张三','age':18,'sex':'男'}
n=dict1.pop('name')#删除字典键值对
print(n)
print(dict1)
{'age': 18, 'sex': '男'}