格式
以{}表示,每一项用逗号隔开,内部元素用key:value的形式来保存数据:
dic{"key":"value","key2":"value2"}
key:必须是可哈希的(不可变的),并且是唯一的
value:任意值
字典是无序的(3.6默认了定义顺序),可变的(可增删改查)
作用
2.1 用于存储大量数据,比列表还要大的,但比较消耗内存
2.2 字典能够将数据与数据进行关联,有明确对应关系时推荐使用字典
2.3 通过key来查找元素,查询效率高
2.4 hash算法:key必须时不可变的数据类型
字典的使用方法
方法 | 作用 |
---|---|
1.增 | |
dic["key"] = "value" | 直接用key往里面存数据即可,如果key存在会替换掉原来的value,可用于修改。 |
dic.setdefault("key","value") | 首先查看要添加的键存不存在,如果不存在,就执行新增;如果存在key,不会执行新增 |
2.删 | |
dic.pop("key") | 通过键删除,有返回值,返回的时被删除的值 |
del dic["key"] | 删除指定键值对 |
dic.clear() | 清空 |
3.改 | |
dic["key"] = "value" | 如果键在字典中存在就修改,不存在就添加 |
dic.update(dic2) | 将dic2按key添加到dic中,若dic中key存在则替换成dic2中的value,如果key 不存在则直接添加到dic。括号里的字典级别高 |
4.查 | |
dic["key"] | 通过键获取值,不能通过值获取键,如果存在key就返回对应的值,如果不存在就报错 |
dic.get("key","可制定返回值") | 获取,获取值的时候可以指定返回的内容,键不存在的时候不报错 |
dic.setdefault("key","value") | 首先新增(先看有没有key,如果有就过,如果没有,执行新增),然后根据key把值返回 |
相关操作
4.1 解构
a = 1
b = 2
a,b = b,a
结果:
a=2,b=1
a,_,c = "你好啊" #字符串解构
print(a,c)
结果:
你 啊
a,b = ("1","2") #元组解构
print(a,b)
结果:
1 2
a,b = ["4","5"] #列表解构
print(a,b)
结果:
4 5
a,b = {"a":1,"b":2,} #字典解构
print(a,b)
结果:
a b
4.2 dic.keys() 拿到字典的key
dic.values() 拿到字典的value
dic = {"汪峰": "大陆音乐半壁江山", "周杰伦": "亚洲音乐天王", "罗志祥": "亚洲舞王"}#对字典的遍历
print(dic.keys()) # dict_keys(['汪峰', '周杰伦', '罗志祥']) 像列表但不是列表,可以for循环但不能索引
for key in dic.keys():
print(key) # 拿到key
print(dic[key]) # 拿到value
4.3 dic.items() 拿到key和value,每一项为一个元组
dic = {"1":1,"2":2,"3":3,"4":4}
print(dic.items())
结果:
dict_items([('1', 1), ('2', 2), ('3', 3), ('4', 4)])
dic = {"1":1,"2":2,"3":3,"4":4}
for item in dic.items(): # 当需要遍历字典. 在操作中涉及到key和value的时候.
print(item) # 元组
print(item[0],item[1])
结果:
('1', 1)
1 1
('2', 2)
2 2
('3', 3)
3 3
('4', 4)
4 4
通过key和value解构可写成:
dic = {"1":1,"2":2,"3":3,"4":4}
for k, v in dic.items(): #拿到元组类型的键值对,然后进行解构
print(k,v)
结果:
1 1
2 2
3 3
4 4
dic = {"1":1,"2":2,"3":3,"4":4}
for i in dic: # 效率高
print(i,dic[i])
4.5 效率问题
import time
dic = {"1":1,"2":2,"3":3,"4":4}
s = '3'
s = time.time()
if s in dic.keys(): #列表 -- [1,2,3,4,5] 中查找s 效率高
pass
print(time.time() - s)
s1 = time.time()
for i in dic:
if s == i:
pass
print(time.time() - s1)
4.6 enumerate() 枚举
dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111}
count = 1
for i in dic:
print(count,i)
count += 1
#直接使用enumerate()
for i,k in enumerate(dic,1): # 其中第二个参数默认不写就是0 -- 枚举
print(i,k)
结果:
1 电脑
2 手机
3 耳机
4 老婆
字典的嵌套
wf = {
"name": "汪峰",
"age": 48,
"成名曲": "春天里",
"wife": {
"name": "章子怡",
"age": 39,
"工作": "演员"
},
"children":[
{"num": "001", "name": "汪一", "hobby": "唱歌"},
{"num": "002", "name": "汪二", "hobby": "演戏"} # wf['children'][1]['name']
]
}
wf['wife']['age'] = wf['wife']['age'] + 10
print(wf)
结果:
{'name': '汪峰', 'age': 48, '成名曲': '春天里', 'wife': {'name': '章子怡', 'age': 49, '工作': '演员'}, 'children': [{'num': '001', 'name': '汪一', 'hobby': '唱歌'}, {'num': '002', 'name': '汪二', 'hobby': '演戏'}]}
原文:https://www.cnblogs.com/yaoqi17/p/10999297.html