1.字典 dict
{ }表示一个字典,每次保存两个数据 key:value, 键值对
{"北京":"首都", "sylar":"邱彦涛","强强":"张强强"}
value : 任意的数据类型
key : 必须是可哈希的(不可变)
字典不能切片
2 dict 增删改查
1.增: 添加内容可以直接使用key来进行添加 ,如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增
# 新增 dic = {} # dic['jay'] = "周杰伦" # {'jay': '周杰伦'} # dic["jay"] = "王力宏" # {'jay': '王力宏'} # # 如果key存在.执行的是修改操作. 如果key不存在. 执行的是新增 # print(dic)
setdefault():如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 .如果dict中已经存在了. 那么setdefault将不会起作用
# 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 dic.setdefault('李嘉诚') # 也可以往里面设置值. dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作用 print(dic)
2.删除
1. pop() : 按key值删除,返回一个value
2. del : 按key删除,没有返回值
3. clear() : 清空字典
4. popitem() : 随机删除 返回一个元组元组可以直接解构成两个值
删除 # 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) # 解构 # a, b = (1, 5) # print(a) # print(b) # k,v = dic.popitem() # dic.popitem()的结果是一个元组. 元组可以直接解构成两个值 # print(k) # print(v)
小知识点: 解构
# a, b = (1, 5) # print(a) # print(b)
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)
dic = {"id": 123, "name": 'sylar', "age": 18}
dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
print(dic)
print(dic1)
4. 查: 用key查找 , get()按key查找,如果不存在就返回None或返回指定参数
dic = {"id": 123, "name": 'sylar', "age": 18}
print(dic['name']) # print(dic['sylar']) # 报错 print(dic.get("ok")) print(dic.get("sylar")) # None print(dic.get("sylar", "牛B")) # 牛B
常用操作:
1. keys()返回所有的key的列表
2. values()返回所有的value的列表
3. items() 返回所有键值的元组表示形式.
dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科比"} print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不用管它是什么.当成list来用就行 for key in dic.keys(): print(key) print(dic.values()) # dict_values([123, 'sylar', 18, '科比']) 一样. 也当list来用 for value in dic.values(): print(value) print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 18), ('ok', '科比')]) 这个东西也是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)
字典的嵌套
# 字典的嵌套 dic1 = { "name": "汪峰", "age": 18, "wife": { "name": '章子怡', "age": 28 }, "children": ['第一个毛孩子', '第二个毛孩子'], "desc": '峰哥不会告我吧. 没关系. 我想上头条的' } print(dic1.get("wife").get("name")) print(dic1.get("children")) print(dic1.get("children")[1])