字典
dict. 以 {} 表示, 每一项用逗号隔开, 内部元素用 key: value的形式来保存数据
例子: dict.{"JJ":"林俊杰","Jay":"周杰伦"}
查询效率非常高,通过key来查找元素 内部使用key来计算一个内存地址(暂时) , hash 算法 . 要求 key 必须是不可变的数据类型(key 必须是课hash的数据类型)
字典没有切片
字典的增删改查
-
新增
# 第一种方法 直接增加 dic = {} dic["巴萨"] = "梅西" dic["尤文"] = "C罗" print(dic) # 第二种方法 dic = {} dic.setdefault("切尔西", "阿扎尔") #setfault 设置默认值 dic.setdefault("切尔西", "德罗巴") print(dic) # 打印结果是 {"切尔西":"阿扎尔"} 如果存在了key,不会替换掉原来的 如果 value 没有值 打印结果是 None
-
删除
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"} dic.pop("皇马") # 指定key删除 必须有一个参数 dic.popitem() # 随机删除 dic.clear() # 清空字典 del dic["key"] # 删除
-
修改和查询
# 修改 dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"} dic["key"] = "新value" # 替换掉key 所对应的旧 value dic2 = {"巴萨":"伊涅斯塔", "皇马":"拉莫斯", "曼城":"萨内"} dic.update(dic2) # update :更新 print(dic) # 打印结果为 {'巴萨': '伊涅斯塔', '皇马': '拉莫斯', '曼城': '萨内', '尤文': 'C罗', '巴黎': '内马尔'}
# 查询 dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"} print(dic["曼城"]) # 最直观, 直接用key 当key不存在时会报错 print(dic.get("皇马","value 不在这里") # 如果没有查询到key 会打印出 "value 不在这里" 这句话. 如果没有第二个参数 返回 None . setdefault() # 1. 新增( 先看有没有可以, 如果有就过, 没有执行新增 ) 2. 根据key 把值返回
字典的相关操作
-
dic = {"巴萨":"梅西", "皇马":"莫德里奇", "曼城":"萨内", "尤文":"C罗", "巴黎":"内马尔"} # 对字典的遍历 print(dic.keys()) # 得到一个像列表却不是列表的东西 dict_keys(['巴萨', '皇马', '曼城', '尤文', '巴黎']) for key in dic.keys(): # 找到字典中的 key print(key) # 打印key print(dic[key]) # 打印value for key in dic: # 字典本身是一个可迭代对象,可以直接进行for循环. 找到字典中的 key print(key) print(dic[key]) for value in dic.values(): # 找到字典中的 value print(value) # 打印value print(dic.items()) # 拿到的是key 和 value item 意思是 项 # 打印结果 : dict_items([('巴萨', '梅西'), ('皇马', '莫德里奇'), ('曼城', '萨内'), ('尤文', 'C罗'), ('巴黎', '内马尔')]) for item in dic.items(): print(item) # 打印结果是元组 ('巴萨', '梅西') ('皇马', '莫德里奇') ('曼城', '萨内') ('尤文', 'C罗') ('巴黎', '内马尔') print(item[0],item[1]) 巴萨 梅西 皇马 莫德里奇 曼城 萨内 尤文 C罗 巴黎 内马尔 # 注: a, b = (10, 20) # 解构 解包 前面变量的个数和后面解包的个一致 print(a) # 结果 10 print(b) # 结果 20 # 根据解构 可将 for item in dic.items(): 简化成下面的形式 for k, v in dic.items(): # 当需要遍历字典. 在操作中设计到key 和 value 的时候. print(k) print(v)