字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
字典的查询速率要高于列表,列表属于线性存储
#!/usr/bin/python # -*- coding: UTF-8 –*- d = {} d['one'] = "This is one" #字典中添加元素 格式:字典名[键] = 值 d[''] = "This is two" tinydict = { 'name': 'john','code':6734, 'dept': 'sales'}
1、查
# 当通过索引取值时,如果 key 不存在,返回默认值:None,也可以指定默认值:d.get('key','str'),返回默认值:strprint(d.get('one1')) # 输出键为'one' 的值,键不存在不会报错,返回 None,推荐使用# print(d['one1']) # 输出键为'one' 的值,如果键不存在则报错print(d['2']) # 输出键为 '2' 的值print(tinyd) # 输出完整的字典print(tinyd.keys()) # 输出所有键print(tinyd.values()) # 输出所有值print(d.items()) # 获取所有的键值对print('str' in d.keys()) # 检测字典中的key是否存在,返回 true、falseprint(sorted(d)) # 默认按键名排序,排序也是要数据类型要一致,不然会报错
2、增
d2 = {}d2['hjc'] = "boy" # 字典中添加元素 格式:字典名[添加的键] = 值,如果键存在,将修改键的值d.update(d2) # 把字典2合并到字典1里去 格式:源字典.update(被合并的字典),如果存在同样的键,合并后会覆盖旧的键d.update({ 'k1': 'v1'}) # 另一个添加方法print(d) # {'one': 'This is one', '2': 'This is two', , }
3、改
d['hjc'] = "girl" # 字典用修改元素 格式:字典名[修改的键] = 值# 如果 hobby 键不存在,则新建一对键值对,并打印,存在,则不做任何处理,并把存在的值打印出来d.setdefault('hobby', 'girl')print(d) # {'one': 'This is one', '2': 'This is two', 'hjc': 'girl', }
4、删
del d['hjc'] # 删除字典中的元素和值 格式:del 字典名['删除的键'],d.clear() # 清除字典中的所有内容,返回空字典print(d.pop('key')) # 删除对应的 key 和 value,如果键不存在会报错, 可以避免错误,返回 Noneprint(d.popitem()) # 随机删除一组键值对,没卵用
5、其他方法
dict1 = dict.fromkeys(['host1', 'host2', 'host3'],'test') # test 作为值,同时赋值给前面的 3 个键print(dict1) # {'host1': 'test', 'host2': 'test', 'host3': 'test'}dict1 = dict.fromkeys(['host1', 'host2', 'host3'], ['test1', 'test2']) # 值作为列表,赋值给前面的3个键,作为值print(dict1) # {'host1': ['test1', 'test2'], 'host2': ['test1', 'test2'], 'host3': ['test1', 'test2']}
# 循环取 key:for i in tinyd: print(i)# 循环遍历取 键值对;# 法1:(推荐,效率最高)for i in tinyd: print(i, tinyd[i])'''name johncode 6734dept sales'''# 法2:for k, v in tinyd.items(): # items 默认输出键值对,这里设置变量,把 key 赋值给 k,value 赋值给 v print(k, v)'''name johncode 6734dept sales'''# 法3:new_dic = dict(enumerate(tinyd))print(new_dic) # {0: 'name', 1: 'code', 2: 'dept'}