十三、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)
posted @ 2023-06-16 16:17  村尚chun叔  阅读(31)  评论(0编辑  收藏  举报