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)