字典

一、主要内容:

  1、dict 字典

    用大括号{}括起来,内部使用key:value的形式来保存数据。

    语法:{key1:value1,key2:value2...}    例如:{"陈长生":"鹿晗","徐有容":"古力娜扎","白落衡":"吴倩"}

#合法的
dic = {123:456,True:999,"id":1,"name":"sylar","age":18,"stu":["帅哥","美女"],(1,2,3):"马化腾"}
print(dic[123])
print(dic[Ture])
print(dic["id"])
print(dic["stu"])
print(dic[(1,2,3)])

#不合法
dic = {[1,2,3]:"alex"}  #list是可变的,不能做为key
dic = {{1:2}:"张无忌"}  #dict是可变的,不能作为key
dic = {{1,2,3}:"周芷若"} #set是可变的,不能作为key

    注意:字典的key必须是可哈希的,不可变的,value没有限制,可以保存任意类型的数据

    不是按照我的保存的顺序来保存的,是按照hash表的顺序保存的。而hash表不是连续的,不能进行切片,只能通过key来获取dict中的数据。字典是无序的

  2、增删改查

    增:dict[不存在的key] = value、 setdefault()

dic = {}
dic["name"] = "张无忌" #如果dict中没有出现这个key,就会新增一个key-value的组合进dict
dic["age"] = 18
print(dic)

#如果dict中没有出现这个key-value。可以通过setdefaul设置默认值
dic.setdefaule("张无忌")  #此时添加的元素key对应的value没有值,默认为None
dic.setdefaule("张无忌","周芷若")  #如果dict中已经存在了key。setdefault将不会起作用
print(dic)

    删:pop(kye)、del dict[key]、popitem()、clear()

ret = dic.pop("jay") #通过key值去删
print(ret)

del dic["jay"]  #通过key值去删
print(dic)

ret = dic.popitem()  #随机删除
print(ret)

dic.clear()  #清空字典
print(dic)

    改:dict[不存在的key] = "新值"、d1.update(d2)-->把d2的值k-v更新到d1中

dic1 = {"id":"123","name":"sylar","age""18}
dic2 = {"id":"456","name":"马化腾""ok":"wtf"}
dic1.update(dic2) #把dic2中的内容更新到dic1中,如果key重名,则修改替换。如果不存在key,则新增
print(dic1)
print(dic2)

    查:get(key,默认值)、setdefult()、dict[key]

dic = {'id': '456', 'name': '马化腾', 'age': 18, 'ok': 'wtf'}
print
(dic["name"]) #通过key来查找value数据 print(dic.get("ok")) #通过get(key)查找value print(dic["sylar"]) #报错,不能直接用value查找
print(dic.get("sylar")) #输出None,如果没有key,默认输出None
print(dic.get("sylar","牛B")) #输出牛B,如果没有key,输出默认带的值
print(dic.setdufaule("张无忌","周芷若")) #先判断key是否存在在字典中,如果不存在,将先添加到字典中,然后在返回对应的value值;如果key存在在字典中将不做操作。

  3、字典的常用方法

    keys() #返回所有字典的key的集合(高仿列表)

dic = {"id":"123","name":"sylar","age""18}
print(dic.keys()) 
#dict_keys(["id","name","age"])不管他是什么就直接当list用

for key in dic.keys():
    print(key)

    value() #返回所有字典的value的集合

dic = {"id":"123","name":"sylar","age""18}
prnt(dic.values())
#dict_values(["id","sylar","18"]) 一样当list来用

for value in dic.values():
    print(value)

    items() #返回键值对,元组

dic = {"id":"123","name":"sylar","age""18}
print(dic.items())  #dict_items([("id",123),("name",sylar),("age",18)]) 这也是list,只不过list中装的是tuple

for key,value in dic.items():
    print(key,value)

    解构:        

a,b = 1,2
print(a,b)

(c,d) = 3,4
print(c,d)

e,f = [1,2,3]
print(e,f)       #报错ValueError: too many values to unpack (expected 2),解构时要注意数量的匹配

 

  4、字典的嵌套

dic = {
    "naem":"张无忌""age":30,
    "wife":{
            "name":"赵敏",
            "age":28
     },
     "children":["大儿子""二儿子"],
     "desc":"我是明教教主"
}  
print(dic.get("wife").get("name"))  #查看张无忌老婆的名字
print(dic.get("children"))  #查看张无忌的孩子
print(dic.get("children")[1])  #查看张无忌的二儿子              

 

 

========================================================================================

二、可变和不可变的数据类型:

  可变:不可哈希(可变)的数据类型:list,dict,set

  不可变:可哈希(不可变)的数据类型:int,srt,tuple,bool

 

posted @ 2018-07-08 01:50  LW-5208  阅读(150)  评论(0)    收藏  举报