dict字典
{}表示. 每次保存两个数据 key:value, 键值对
{"大阳哥":"赵阳", "sylar":"邱彦涛","强强":"张强强"}
value: 任意的数据类型
key: 必须是可哈希的(不可变)
字典不能切片
二 字典的 增删改查
1. 增: 1.添加内容可以直接使用key来进行添加
dic = {} dic['jay'] = "周杰伦" # {'jay': '周杰伦'} dic["jay"] = "王力宏" # {'jay': '王力宏'} #如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增 print(dic)
2. setdefault()
dic.setdefault("王二小") # 一个参数放的是key dic.setdefault("王二小", "弹溜溜") # 如果key不存在. 新增 dic.setdefault("王二小", "上片机") # 如果存在key. 不执行任何操作 print(dic) dic = {} dic.setdefault("李嘉诚") dic.setdefault("李嘉诚", "房地产") print(dic)
2 删 删: pop(), del, clear, popitems()
dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'} ret = dic.pop("朱棣") # 返回value print(ret) print(dic) del dic['朱允炆'] # 缺点:没有返回 print(dic) dic.clear() # 清空 print(dic) ret = dic.popitem() # 随机删. print(ret) print(ret[0], ret[1]) print(dic)
(2) 解构
a, b = (1, 5) # print(a) # print(b) # k,v = dic.popitem() # dic.popitem()的结果是一个元组. 元组可以直接解构成两个值 # print(k) # print(v)
3改 改: 用key改, 也可以进行update
# dic = {'朱高炽':None, "朱元璋":"和尚", "诸葛亮":'不是个和尚'} # dic["朱高炽"] = "很胖的一个独眼龙" # print(dic) #{'age': 58, '朱祁镇': 18, '朱棣': 55, '年轻': 18, '张无忌': '赵敏', 'name': '朱由检'} # dic1 = {"name":'朱高炽','age':58, '朱祁镇':18} # dic2 = {"name":'朱由检','年轻':18, '朱棣':55, '张无忌':'赵敏'} # # update: 把dic2更新到dic1, dic1中如果存在了dic2中的key.会修改(覆盖), 如果不存在. 新增这个key:value # dic1.update(dic2) # print(dic1) # print(dic2)
4查用key查找
lst = [1, 2, 5, 8] # print(lst[5]) # list index out of range # dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50} # print(dic['朱见深']) # KeyError: '朱见深' key不存在 # print(dic.get("朱祁镇")) # dic.get("朱祁镇") == dic['朱祁镇'] # get(key, default) # print(dic.get("朱见深", "查无此人")) # 返回none. 不存在key # dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50} # print(dic.keys()) # dict_keys(['朱允炆', '朱祁镇', '朱棣']) 把这个当成list来看就可以了 # for el in dic.keys(): # print(el) # 拿到了key.就可以拿value # print(dic.get(el)) # value # dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50} # print(dic.values()) # for el in dic.values(): # print(el) # dic = {'朱祁镇': 18, '朱棣': 55, '朱允炆':50} # print(dic.items()) # # 从dic中获取到list列表. 列表中每一项都是一个元组(key,value) 通过解构可以直接把key和value获取到 # for k,v in dic.items(): # print(k) # print(v) # wangfeng = { # 'name':'汪峰', # 'age':46, # 'wife':{ # 'name':'章子怡', # 'age':43 # }, # 'children':[ # {'name':'小叮当','age':10}, # {'name':'大叮当','age':16} # ] # } # 汪峰的第二个儿子的年龄 # print(wangfeng.get("children")[1].get("age")) # print(wangfeng.get("wife").get("name")) # print(wangfeng.get("name"))
3 字典嵌套 dict
dic = { 'name':['alex',2,3,5], 'job':'teacher', 'oldboy':{'alex':['python1','python2',100]} } # 1,将name对应的列表追加一个元素’wusir’。 dic['name'].append("wusir") print(dic) # 2,将name对应的列表中的alex首字母大写。 dic['name'][0] = dic['name'][0].capitalize() print(dic) # 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。 dic['oldboy']['老男孩'] = 'linux' print(dic) # 4,将oldboy对应的字典中的alex对应的列表中的python2删除。 dic["oldboy"]['alex'].remove('python2') print(dic)