字典是可变数据类型
字典是python中唯一映射数据类型
字典的特点是查询效率高;存储大量的关系型数据
通过Key查找value,内部使用Key来计算一个内存地址
key是不可变数据类型 元组、bool、int、str
python3.5以前字典是无序的
创建字典方式以及zip
information_dic = {"name": "wg", "age": 33}
information_dic = dict([("name", "wg"), ("age", 33)])
information_dic = dict("name"=”wg“, age=33)
information_dic = dict(zip(lis1, lis2))
字典的增删改查
information_dic["high"] = 185 # 有key修改value,没有增加
information_dic.setdefault("weight", 122) # 有key不修改value,没有增加
information_dic.update(information1) # 有key修改value,没有增加
information_dic = {键: 值,}
information_dic.get(key) # 是否有键,没有返回none;括号中可以设置0,返回0
information_dic.setdefault("键") # 没有返回None
information_dic["键"] # 没有就报错
information_dic.keys() # 查键,返回列表
information_dic.values() # 查值,返回列表
informaiton_dic.items() # 查键值对,返回元组
for i in information (.keys,.values,.items) # 什么都不加返回键
information_dic.pop(key, 设置返回值) # 可以测试是否有键
information_dic.popitem() # 随机删;3.6以后默认删最后一个;返回键值对元组
del information_dic[key]
information.clear() # 清空
关于fromkeys的坑
information_dic = dict.fromkeys() # 新字典通过第1个参数迭代做k,第2个参数做值
dict.fromkeys([], "")
# 只改变一个值
information_dic[key] = ""
# 全改变
dict.fromkeys([], [])
information_dic[].append("") # 所有键值对的id一样
# 这里我们说是受是否可变数据类型影响应该
解构和解包
a, b = 10, 20 == (10, 20) == [10, 20] # 元组和列表都有这功能
for item in dic.items():
k,v = item
print(k)
print(v)
#json长的就是字典样式
字典推导式
dic1 = {dic[k]: k for k in dic}
dic = {"a": 1, "b": 2, "A": 3, "D": 4}
# dic1 = {}
# for k in dic:
# # dic1[k.lower()] = dic.get(k.upper(), 0) + dic.get(k.lower(), 0)
# dic1.setdefault(k.lower(), dic.get(k.upper(), 0) + dic.get(k.lower(), 0))
# print(dic1)
dic2 = {k.lower(): dic.get(k.upper(), 0) + dic.get(k.lower(), 0) for k in dic}
print(dic2)
提取单一元素字典
- key,value的方法
# d = {'name':'haohao'}
# (k, v), = d.items()
# print(k)
#
# d = {'name':'haohao'}
# k = list(d)[0]
# v = list(d.values())[0]
# print(k)
#
# d = {'name':'haohao'}
# k, = d
# v, = d.values()
# print(k)