5 字典

一.字典
1.成对的储存数据,以key,value的形式保存数据
2.字典的key是不重复的,是通过哈希算法,哈希算法得到的是唯一一个数字(可以是正,也可以是负数)
哈希算法是无序,字典中的key必须是可哈希的,不可变数据类型
1.不可变数据类型:
字符串,int,bool,tuple元组
2.可变数据类型:
list dict set
3.增删改查
1.增
dic[key]=value 如果key已经存在,则会覆盖
setdefault(key,value) 如果key已经存在,则不做任何操作;key不存在则会新增

2.删
dic.pop(key)
dic.popitem() 随机删
del dic[key]
dic.clear()

3.改
dic[key]=new value key存在,则该为new value ;key不存在,则会创建
dic.update(dic2) 把字典dic2 的覆盖添加到字典dic中

4.查
print(dic[key]) key存在,则打印key对应的value ;key不存在,则会报错
print(dic.get(key,自定义的返回值) 如果key存在,则返回key对应的value,不存在则返回自定义的返回值
dic.setdefault(key,自定义value)
如何key不存在则返回自定义value,如果key存在则返回key对应的value值 ret=dic.setdefaut(key,自定义value)

6.常见操作
dic.keys()
dic.values()
dic.items()

循环打印key:
for key in dic:
print(key)
循环打印key,value
for key,value in items:
print(key,value)


#字典的增删改查
#一.增
#1.增  dic[key]=value   如果key已经存在就会覆盖 ,不存在就会新增
dic={}
dic["刘德华"]="练习"

#2. dic.setdefault(key,value)   #key存在就不做操作,key不存在则会新增
dic.setdefault("王力宏","心跳")
dic.setdefault("刘德华","无间道")
# print(dic)

# 二.删
dic1={'刘德华': '练习', '王力宏': '心跳',"陈奕迅":"十年","王俊杰":"他说"}
# dic1.pop("刘德华")
# print(dic1.popitem() )#随机删
# del dic1["刘德华"]
# dic1.clear()  #清空
# print(dic1)

#三.改
# dic2={"王菲":"因为爱情","陈奕迅":"约定"}
# dic1["刘德华"]="无间道"  #dic[key]=new value
# dic1.update(dic2) #dic2中的覆盖添加到dic1中
# print(dic1)

#.查
print(dic1["刘德华"]) #dic1[key]  key存在,则返回value;key不存在则报错

print(dic1.get("刘德华")) #dic1.get(key) key 存在,则返回value,key不存在则返回None
print(dic1.get("周华健","不存在")) #dic1.get(key,自定义的返回值) key 存在,则返回value,key不存在则返回自定义的返回值

dic2={"王菲":"因为爱情","陈奕迅":"约定"}
ret1=dic2.setdefault("王菲","存在")
print(ret1) #因为爱情   因为"王菲"这个键存在,所以通过setdefault方法返回的是dic2["王菲"]===>因为爱情
ret2=dic2.setdefault("周华健","朋友")
print(ret2)  #朋友   因为"周华健"这个键在字典dic2不存在,所以通过setdefault方法创建出的键值对,返回的是新value"朋友"
字典增删改查

 






posted @ 2018-10-23 13:47  冰底熊  阅读(179)  评论(0编辑  收藏  举报