字典
前面我们讲到了列表的操作,接下来我们来看一下字典的相关操作:
#key-value
stdinfo = {
"0001":"sylvain",
"0002":"jack",
"0003":"rose",
}
print(stdinfo) # 字典无序
# 查
print(stdinfo["0001"]) # 根据key值访问value,若key不存在,则报错
print(stdinfo.get("0001")) # 安全的方法,效果同上,若key不存在,返回None
print("0005" in stdinfo) # 判断key是否在字典中,返回True或Fals
# 改
stdinfo["0002"] = "杰克" # 存在则修改
# 增
stdinfo["0004"] = "hanmeimei" # 不存在则添加
# 删
del stdinfo["0001"] # 指定key删除
stdinfo.pop("0002") # 指定key删除
stdinfo.popitem() # 随机删除一对键值,因为字典无序
# 其他
stdinfo.values() # 返回所有值
stdinfo.keys() # 返回所有键
stdinfo.setdefault("0003","wutenglan") #key存在则返回value,不存在则增加
dica = {
"0003": "hahaha",
1: 1,
2: 2,
}
stdinfo.update(dica) # 合并字典,若已存在则覆盖,不存在则增加
print(stdinfo.items()) # 将字典转化为列表,每队键值为一个元组
dicb = dict.fromkeys([1,2,3]) # 初始化一个字典,键值为列表,value为None
dicc = dict.fromkeys([
1,2,3],"test") # 初始化一个字典,键值为列表,value都为test
# 这里有一个坑,当value初始化为可变对象时,如列表,修改任何一个value,其他的value也改了
dicd = dict.fromkeys([1,2,3],["hello","world"])
dicd[1][1] = "China"
print(dicd)
print(stdinfo)
上述用fromkeys来初始化一个字典且value为可变对象时,修改任何一个value,对应的所有value值都修改了,这个原理同浅拷贝的原理是一直的,有兴趣的朋友可以看下篇文章中关于深浅拷贝的讲解。
下面我们来看一下字典的嵌套:
# 多层字典嵌套
bookinfo = {
"0001": {"乌合之众": ["古斯塔夫·勒庞","一般"]},
"0002": {"娱乐至死": ["尼尔·波兹曼","很好看"]},
}
# 字典嵌套字典嵌套列表
bookinfo["0001"]["乌合之众"][1] = "不好看"
print(bookinfo)
好了,到这里字典就讲解完了,欢迎各位大佬指正。