python基础数据类型--字典(dict)
python基础数据类型--字典(dict)
一、字典的定义和特性
定义: {'key1':'value1'}
1.键与值之间用 冒号 ‘:’ 分割
2.项与项之间用 逗号 ‘,’ 分割
特性:
1.字典dict的key必须是不可变数据类型:元组、布尔值、数值、字符串,必须唯一
2.字典dict的value可以是任意数据类型
3.字典dict的优点:
二分查找查询
存储大量的关系型数据
4.字典的特点: 无序的——>无索引(python3.5及以前版本)
二、字典的创建和常见操作
字典的创建
person = {'name':'alex','age':'20'} 或 person = dict(name = 'alex',age = 20) 或 person = dict({'name':'alex','age':'20'})
======》》》fromkeys
描述 Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。 语法 fromkeys()方法语法: dict.fromkeys(seq[, value])) 参数 seq -- 字典键值列表。 value -- 可选参数, 设置键序列(seq)的值。 返回值 该方法返回列表。 实例 以下实例展示了 fromkeys()函数的使用方法: #!/usr/bin/python3 seq = ('name', 'age', 'sex') dict = dict.fromkeys(seq) print ("新的字典为 : %s" % str(dict)) dict = dict.fromkeys(seq, 10) print ("新的字典为 : %s" % str(dict)) 以上实例输出结果为: 新的字典为 : {'age': None, 'name': None, 'sex': None} 新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
课堂代码 ------------[1,2,3]是一个可以迭代的,拿出来作为后面‘春天’的key 重新建立一个字典
dic = dict.fromkeys([1,2,3],'春天') print(dic) >>> {1: '春天', 2: '春天', 3: '春天'}
字典的操作
键、值、键值队
1、dic.key() 返回一个包含字典所有key的列表
2、dic.value() 返回一个包含字典所有value的列表
3、dic.items() 返回一个包含字典所有(键、值)元组的列表
4、dic.iteritems() 、dic.iterkeys() 、dic.itervalues() 与他们对应的是非迭代方法一样,不同的是返回一个迭代子,而不是一个列表
新增-------两种
dic1 = {'age':'18','name':'jin','sex':'man'}
dic1['high'] = 187 #### 没有的时候添加,有的时候覆盖 >>> {'age': '18', 'name': 'jin', 'sex': 'man', 'high': 187}
dic1.setdefault('high',187) ##### setdefault 如果没有键,则增加,且如果不写值vlaue,则默认None dic1.setdefault('age',20) ##### setdefault 有 不作任何改变 >>> {'age': '18', 'name': 'jin', 'sex': 'man', 'high': 187}
删除 --------四种
1.pop() 有返回值,按键删除,返回值可以设置为默认
dic = {'age': 26, 'name': 'jin', 'sex': 'male'} ------------------------------------------------------------------- dic.pop('name1','No KEY') # 如果有没键,不报错,返回值会返回后面的参数文本 print(dic.pop('name1','No KEY')) >>> 'No KEY' print(dic) >>> {'name': 'yang', 'sex': 'male', 'age': 26} --------------------------------------------------------------- dic.pop('age') # 如果有键,则删除对应的键值对;返回值会返回删除掉的值value print(dic.pop('age')) >>> 26 print(dic) >>> {'sex': 'male', 'name': 'yang'}
2.popitem() 随机删除
dic.popitem() # 随机删除字典中的一组键值对 >>> {'name': 'yang', 'sex': 'male'}
3.清空列表
dic.clear() # 清空字典 >>> {}
4.del 删除
del dic['height'] # 如果没有键,则报错 >>> Traceback (most recent call last): File "D:******.py", line 31, in <module> del dic['height'] # 如果没有键,则报错 KeyError: 'height' --------------------------------------------------------- del dic['age'] # 如果有键,则删除对应的键值对 >>> {'name': 'yang', 'sex': 'male'}
改---------两种
1. ---------------同增
dic['height'] = 185 # 如果没有键,则增加 >>> {'height': 185, 'age': 26, 'sex': 'male', 'name': 'yang'} dic['age'] = 18 # 如果有键,则修改 >>> {'sex': 'male', 'name': 'yang', 'age': 18}
2.update() 更新
dic = {'name':'xiaoqiang','age':20} dic1 = {'weight':10,'name':'qiao'} dic.update(dic1) print(dic) #有的做覆盖,没有的做更新 print(dic1) #无变化 >>> {'name': 'qiao', 'age': 20, 'weight': 10} {'weight': 10, 'name': 'qiao'}
查----5种
dic1 = {'age':18,'name':'xiaoqiang','sex':'male',} # 按‘键’查询 key() for i in dic1: print(i) for i in dic1.keys(): print(i) #按‘值’查询 values() for i in dic1.values(): print(i) # 按‘键、值’查询items() for i in dic1.items(): print(i) # 按键和值查询 for k,y in dic1.items(): print(k,y)
dic.get('height','No KEY') # 如果没有键,则返回值为后面的参数文本 print(dic.get('height','No KEY')) >>> No KEY
print(dic['height']) # 如果有没键,则报错 >>> Traceback (most recent call last): File "D:********.py", line 79, in <module> print(dic['height']) # 如果有没键,则报错 KeyError: 'height'
字典的嵌套
dic = { 'name':['a','b','c'], 'age':43, 'addr':{ '1':1, '2':2, } } # 需求:在addr中加入'3':3这个键值对 dic['addr']['3'] = 3 print(dic)