字典:
就是一种映射关系,通过键值对的方式来存储数据,采用的是哈希算法。字典是无序存储的没有位置关系。
不可变类型: 整型,字符串,元组 >>>> 键 一定是不可变类型,保持唯一性
可变类型: 列表,字典 >>> 值 可以是任何类型(不可变,可变)
dic={'name':'wangwei','age':40,'hobby':{'girl_name':'铁锤','age':40}}
如果字典中出现两个相同的键,后面的键值对顶掉前面一组键值对,保留后面的
字典两大特点:无序,键唯一
增:
1. dic1={"name":"alex"}
dic1["age"]=18 print(dic1) 直接赋值键值对操作增加(没有键就增加,有键就会修改顶替)
2. dic1.setdefault("age",34) 如果没有键就增加,有键就不会动
ret=dic1.setdefault("age",34) print(ret) :有返回值(如果有相同键,拿原键的值。如果没有相同键,就拿新赋的键值)
查:
1.print(dic["name"])
2. print(dic1.keys())查所有键 >>> 再转换成列表 >>> print(list(dic1.keys()))
print(dic1.values())查所有值>>> 再转换成列表 >>> print(list(dic1.values()))
print(dic1.items())查所有的键值对 >>> 再转换成列表 >>> print(list(dic1.items()))
改:
1. update方法,类似于列表中extend方法。
dic1.update(dic2) print(dic1) #把dic2的内容加到dic1中,新内容增加进入。有键就覆盖旧值!
删:
1. del dic1["name"] print(dic1)----删除是键值对
del dic1 ----删除整个字典 (字典删除后不存在,打印出来后会报错)
2. clear dic1.clear() print(dic1)-----清空字典
3. pop dic1.pop("name") print(dic1)----删除是键值对,删除后有返回值ret=dic1.pop("name")
4. dic.popitem() print(dic)----随机删除一对键值对并以元组方式返回一个ret值
其它操作方法:
dict.fromkeys()
dic=dict.fromkeys(["host1","host2","host3"],"test")
print(dic)-----{'host1': 'test', 'host2': 'test', 'host3': 'test'} #涉及到深浅拷贝的问题
字典嵌套
dic={"湖北省":{"黄冈市":["蕲春县","浠水县","罗田县"]}
排序:
print(sorted(dic)) #与列表中的a.sort()方法有一点区别,字典中sorted放在前面,列表中放在后面 ,它是根据键值进行排序
print(sorted(dic.keys())) 对键进行排序,键值对也是按照键来排序的
print(sorted(dic.values())) 对值进行排序
字典的遍历:
1. for i in dic:
print(i) 或者 print(i,dic[i])将键值对的内容全部拿出来
2. for i in dic.items(): # for i,v in dic.items(): print(i,v)
print(i)将键值对的内容全部以元组方式拿出来
以上方法推荐使用第一方法,效率高