Python学习--字典
1. 字典创建
字典使用键值对(key-value)存储数据,每一个键(key)对应一个值(value),key与value是相互绑定的,通过key可以唯一访问到对应的值。
创建一个字典:
1 dic = {'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 2 dic = dict(k1='alec', k2='aric', k3='Alex', k4='Tony', k5='rain')3 dic = dict({'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'})
字典适用中括号包含key访问value,如dic['k1']得到字符串'alec'
2. 字典操作
2.1 clear(self)
清除字典内容,使字典成为一个空字典
1 dic = {'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 2 print(dic) 3 dic.clear() 4 print(dic) 5 6 >>{'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 7 >>{}
2.2 copy(self)
浅拷贝
1 dic = {'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 2 3 dic1 = dic.copy() 4 dic2 = dic 5 6 dic['k1'] = 'AAA' 7 8 print(dic) 9 print(dic1) 10 print(dic2) 11 12 >>{'k1': 'AAA', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 13 >>{'k1': 'alec', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'} 14 >>{'k1': 'AAA', 'k2': 'aric', 'k3': 'Alex', 'k4': 'Tony', 'k5': 'rain'}
直接使用赋值操作符拷贝字典仅仅将对象的引用拷贝过去,即dic2只是dic的引用,当dic发生改变时dic2同步改变
适用copy函数则是将dic拷贝一个副本给dic1,当dic发生改变时对dic1不产生影响
2.3 fromkeys(S, v=None)
适用fromkeys从一个字典中取出一些key构成新的字典,S为从一个字典中取出的key,v是这个字典的初始值,每个key的value都是v,默认是None
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 n = dic.fromkeys(['k1', 'k2', 'k3'], 'alex') 3 print(n) 4 5 >>{'k1': 'alex', 'k2': 'alex', 'k3': 'alex'}
2.4 get(self, k, d=None)
查找字典中是否有k这个key,如果有返回k对应的value,如果没有返回d,默认返回None,也可以自定义
2.5 has_key(self, k)
判定是否有k这个键值,如果有返回True,反之返回False
2.6 items(self)
以元组的形式返回整个字典
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 print(dic.items()) 3 4 >>dict_items([('k1', 123), ('k2', 345), ('k4', 111)])
2.7 keys(self)
返回字典的所有key
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 dic_key = dic.keys() 3 print(dic_key) 4 5 >>dict_keys(['k1', 'k2', 'k4'])
2.8 pop(self, k, d=None)
删除k对应的键值对,如果字典中有k对应的key则删除字典中对应的键值对,并返回对应的value,如果没有找到则返回None
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 dic_pop = dic.pop('k2') 3 print(dic) 4 print(dic_pop) 5 6 >>{'k1': 123, 'k4': 111} 7 >>345
2.9 popitem(self)
删除最后一个键值对,并以元组的形式返回被删除的键值对
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 dic_pop = dic.popitem() 3 print(dic) 4 print(dic_pop) 5 6 >>{'k1': 123, 'k2': 345} 7 >>('k4', 111)
2.10 setdefault(self, k, d=None)
查找字典中的key值,如果字典中有k则返回k对应的value,如下代码中的111, 如果没有k则为字典添加一个k,如下代码中的k5
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 flag = dic.setdefault('k5', 'LLL') 3 flag1 = dic.setdefault('k4') 4 5 print(flag) 6 print(flag1) 7 print(dic) 8 9 >>LLL 10 >>111 11 >>{'k1': 123, 'k2': 345, 'k4': 111, 'k5': 'LLL'}
2.11 update(self, E=None, **F)
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 dic.update(k1=444, k3=555) 3 print(dic) 4 5 >>{'k1': 444, 'k2': 345, 'k4': 111, 'k3': 555}
k1存在则更新新值,k3不存在则更新键值对
2.12 values(self)
返回字典中的所有value
1 dic = {'k1': 123, 'k2': 345, 'k4': 111} 2 dic_value = dic.values() 3 print(dic_value) 4 5 >>dict_values([123, 345, 111])