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)
原文:https://www.cnblogs.com/Agoni-7/p/10990699.html