1 创建词典 # dic2-5 最外层括号是构造方法,第二层是代表一个序列,最里层是每一个键值对
dic1 = {"name":"aa","age":13}
dic2 = dict((("name","aa"),("age",13)))
dic3 = dict((["name","aa"],["age",13]))
dic4 = dict([("name","aa"),("age",13)])
dic5 = dict([["name","aa"],["age",13]])
print("dic1:",dic1)
print("dic2:",dic2)
print("dic3:",dic3)
print("dic4:",dic4)
print("dic5:",dic5)
2增
第一种新增方式
dic1 = {"name":"xiaoming","age":13}
print(dic1)
dic1["hobby"]="girl"
print(dic1)
第二种方式
dic1 = {"name":"xiaoming","age":13}
ret = dic1.setdefault("age",34)#有返回值
print(dic1)#原来词典有该键,则不修改词典内容
print(ret)#原来词典有该键,则不修改词典内容,并返回原词典的该键的值
ret = dic1.setdefault("address","beijing")
print(dic1)#原来词典没有该键,新增该键值为词典内容
print(ret)#原来词典没有该键,新增该键值为词典内容,并返回新增的该键的值
3删
1 del dic[键]
dic1 = {"name":"xiaoming","age":13}
del dic1["name"]
print(dic1)
2 dic.clear()清空词典
dic1 = {"name":"xiaoming","age":13}
dic1.clear()
print(dic1)
3 dic.pop(键) 有返回值 ,返回删除的键值对的值
dic1 = {"name":"xiaoming","age":13}
ret = dic1.pop("age")
print(dic1,ret)
4 dic.popitem()随机删除 基本没有用处 有返回值是删除的键值对
dic1 = {"name":"xiaoming","age":13}
ret = dic1.popitem()#返回值是删除的键值对
print(ret ,dic1)
4改
1根据键来修改
dic1 = {"name":"xiaoming","age":13}
dic1["name"]="new_xiaoming"
print(dic1["name"])
2 update(dic)
dic1 = {"name":"xiaoming","age":13}
dic2 = {"ad":"beijing","confirm":"zhonghangzxin"}
dic1.update(dic2)#会把dic2的内容更新到dic1,如果有相同的键值,dic1 的该值会被dic2 的覆盖
print(dic1)#没有相同建,不会覆盖,结果{"name":"xiaoming","age":13,"ad":"beijing","confirm":"zhonghangzxin"}
dic3 = {"depart":"beijing","confirm":"zhonghangzxin"}
dic1.update(dic3)
print(dic1)#有相同建 覆盖{"name":"xiaoming","age":13,"ad":"beijing","confirm":"zhonghangzxin","depart":"beijing"}
5查
1 根据键来获取
dic1 = {"name":"xiaoming","age":13}
a = dic1["name"]
print(a)
2 根据 方法来获取
dic1 = {"name":"xiaoming","age":13}
#keys()
print(dic1.keys())#py3的新类型可以转换为list 获取所有的键
print(list(dic1.keys()))#转换为list类型
print(list(dic1.values()))#同上,获取所有的值
print(list(dic1.items()))#同上 ,获取所有的键值对
6其他内置方法
1 dict.fromKeys([],defalt) 也是创建词典的一种 []中全是键 ,defalt是默认值
dic1 = dict.fromkeys(["test1","test2","test3"],"hahahaha")
print(dic1)#所有的值都被初始化为hahahaha
dic2 = dict.fromkeys(["test1","test2","test3"],["hahahaha","hehehehe"])
print(dic2)#输出{'test3': ['hahahaha', 'hehehehe'], 'test1': ['hahahaha', 'hehehehe'], 'test2': ['hahahaha', 'hehehehe']}
dic2["test1"][1] ="huhuhuhu" #虽然改的是test1的值的第二个元素,但是词典的所有的键的值对应都改了
print(dic2)#输出{'test3': ['hahahaha', 'huhuhuhu'], 'test1': ['hahahaha', 'huhuhuhu'], 'test2': ['hahahaha', 'huhuhuhu']},
2#sorted() 根据键排序可加参数
dic = {1:222,3:555,2:666}
sorted(dic)
print(dic)#{1: 222, 2: 666, 3: 555}
dic = {1:222,3:555,2:666}
print(sorted(dic.values()))#将值进行排序[222, 555, 666]
print(sorted(dic.keys()))#将键进行排序[1, 2, 3]
print(sorted(dic.items()))#按照键进行排序[(1, 222), (2, 666), (3, 555)]
3遍历
1 推荐使用,效率高
dic1 = {"name":"xiaoming","age":13}
for i in dic1:
print(i,dic1[i])
2 不推荐 效率低
dic1 = {"name":"xiaoming","age":13}
for i in dic1.items():#遍历的是键
print(i)#('name', 'xiaoming') ('age', 13)
for i,v in dic1.items():#遍历的是键
print(i,v)#name xiaoming age 13
4 dic.copy () 浅拷贝,父类不随被拷贝对象变化,子类随变化
dict1 = {'user':'runoob','num':[1,2,3]}
dict2 = dict1
dict3 = dict1.copy()
dict1['user']='root'
dict1['num'].remove(1)
print(dict1)
print(dict2)
print(dict3)
{'user': 'root', 'num': [2, 3]}
{'user': 'root', 'num': [2, 3]}
{'user': 'runoob', 'num': [2, 3]}
5 radiansdict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值
dic1 = {"name":"xiaoming","age":13}
print(dic1.get("name",-1))#xiaoming
print(dic1.get("nn",-1))#-1
6 key in dict如果键在字典dict里返回true,否则返回false
dic1 = {"name":"xiaoming","age":13}
print("name" in dic1)