十三、python字典dict
十三、python字典dict
字典:是一种key:value(键值对)类型的数据,它是无序的(没有像列表那样的索引,下标).
它是通过key来找value 底层就是hash表,查找速度快;如果key相等,会自动去重(去掉重复值),也就是说dict中没有重复的key,但是值是可以相等的。
字符串,列表,元组属于序列,所以有下标
1.字典的创建
dict1 = {
'stu01':"zhangsan",
'stu02':"lisi",
'stu03':"wangwu",
'stu04':"maliu",
}
print(type(dict1))
print(len(dict1))
print(dict1)
2.字典的常见操作
# 增
dict1["stu05"] = "田七" # 类似修改,如果key值不存在,则就增加
# 删
dict1.pop("stu02") # 删除这条;也可以del dict1["stu05"]来删除
dict1.popitem() # 删除显示的最后一条
dict1.clear() # 清空字典
print(dict1)
del dict1 # 删除整个字典
# 改
dict1["stu01"] = "张三丰" # 类似增加,如果key值存在,则就修改
# 查
print(dict1["stu01"]) # 如果key值不存在,会返回keyerror错误
print(dict1.get("stu01")) # 这种取值方法如果key值不存在,会返回none,不会返回错误
print(dict1)
3.其他操作
print(dict1.keys()) # 打印所有的keys
print(dict1.values()) # 打印所有的values
print(dict1.items()) # 字典转成列表套元组
# 上面这三种可以使用for来循环遍历
print("stu01" in dict1) # 判断键stud01是否在字典里,在则返回True,不在则返回False
print(list(dict1)) # 这种只能看到key
dict1.setdefault("stu08","老八") # 有这个key,则不改变;没有这个key,则增加这个key和value
# if "stu08" in dict1:
# pass
# else:
# dict1["stu08"]="老八" # 这个判断也可以实现setdefault的方法效果
print(dict1)
dict2={
"stu02":"李四",
"stu09":"老九"
}
dict1.update(dict2) # 把dict2更新到dict1;如果dict2有dict1也有的key,则dict1更新
它的value;如果dict2有,而dict1没有的key,则加到dict1
print(dict1)
4.练习
city={
"北京": {
"东城":"景点",
"朝阳":"娱乐",
"海淀":"大学",
},
"深圳":{
"罗湖":"老城区",
"南山":"IT男聚集",
"福田":"华强北",
},
"上海":{
"黄埔":"xxxx",
"徐汇":"xxxx",
"静安":"xxxx",
},
}
1. 打印北京东城区的说明(也就是打印出"景点")
print(city["北京"]["东城"])
2. 修改北京东城区的说明,改为"故宫在这"
city["北京"]["东城"]="故宫在这"
print(city["北京"]["东城"])
3. 增加北京昌平区及其说明
city["北京"]["昌平"]="我们在这"
print(city)
4. 修改北京海淀区的说明,将"大学"改为"清华","北大","北邮"三个学校的列表
city["北京"]["海淀"]=["清华","北大","北邮"]
print(city["北京"]["海淀"])
5. 在大学列表里再加一个"北影"
city["北京"]["海淀"].append("北影")
print(city["北京"]["海淀"])
6. 循环打印出北京的区名,并在前面显示序号(以1开始)
for index,i in enumerate(city["北京"].keys()):
print(index+1,i)
7. 循环打印出北京海淀区的大学,并在前面显示序号(以1开始)
for index,i in enumerate(city["北京"]["海淀"]):
print(index+1,i)