python字典
1.字典
1)字典的介绍
字典(dict)是python中唯⼀的⼀个映射类型.他是以{ }括起来的键值对组成. 在dict中key是唯⼀的. 在保存的时候, 根据key来计算出⼀个内存地址. 然后将key-value保存在这个地址中.
这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,
那么可哈希就意味着不可变. 这个是为了能准确的计算内存地址⽽规定的
语法 :
{key1: value1, key2: value2....}
1 # 合法 2 dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅 3 哥', '美⼥'], (1, 2, 3): '麻花藤'} 4 print(dic[123]) 5 print(dic[True]) 6 print(dic['id']) 7 print(dic['stu']) 8 print(dic[(1, 2, 3)]) 9 # 不合法 10 # dic = {[1, 2, 3]: '周杰伦'} # list是可变的. 不能作为key 11 # dic = {{1: 2}: "哈哈哈"} # dict是可变的. 不能作为key 12 dic = {{1, 2, 3}: '呵呵呵'} # set是可变的, 不能作为key
2)字典的增删改查和其他相关操作
1. 增加
dic[新key] = 值
1 dic = {} 2 dic['name'] = '周润发' 3 # 如果dict中没有出现这个key, 就会新增⼀个key-value的 4 合进dict 5 dic['age'] = 18 6 print(dic)
setdefault()
1 # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值 2 dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值. 3 dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作⽤ 4 5 print(dic)
2. 删除
pop(key)
1 ret = dic.pop("jay") 2 print(ret) 3 del dic["jay"] 4 print(dic) 5 # 随机删除. 6 ret = dic.popitem() 7 # 清空字典中的所有内容 8 dic.clear()
3. 修改
dic[老key] = 值
update() 跟新字典
1 dic = {"id": 123, "name": 'sylar', "age": 18} 2 dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"} 3 dic.update(dic1) # 把dic1中的内容更新到dic中. 4 如果key重名. 则修改替换.如果不存在key, 则新增. 5 print(dic) 6 print(dic1)
4. 查询
dic[key]
get(key, 值)
setdefault(key, value)
查询⼀般⽤key来查找具体的数据
1 print(dic['name']) 2 # print(dic['sylar']) # 报错 3 print(dic.get("ok"))print(dic.get("sylar")) # None 4 print(dic.get("sylar", "⽜B")) # ⽜B
5. 其他相关操作
1 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"} 2 print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什么.当成list来⽤就⾏ 3 for key in dic.keys(): 4 print(key) 5 print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐']) ⼀样. 也当list来⽤ 6 for value in dic.values(): 7 print(value) 8 print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age', 9 18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过list中装的是tuple 10 for key, value in dic.items(): # ?? 这个是解构 11 print(key, value) 12 # 解构 13 a, b = 1, 2 14 print(a, b) 15 (c, d) = 3, 4 16 print(c, d) 17 e, f = [1, 2, 3] # 解构的时候注意数量必须匹配 18 print(e, f)
3.字典的嵌套
1 # 字典的嵌套 2 dic1 = { 3 "name": "汪峰", 4 "age": 18, 5 "wife": { 6 "name": '章⼦怡', 7 "age": 28 8 }, 9 "children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'], 10 "desc": '峰哥不会告我吧. 没关系. 我想上头条的' 11 } 12 print(dic1.get("wife").get("name"))print(dic1.get("children")) 13 print(dic1.get("children")[1])