python基础三
一、字典disc
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的.
数据类型分为:可变数据类型、不可变数据类型
不可变数据类型:元组、bool、int、str 这些数据类型可哈希
可变数据类型:列表list、字典dict、集合set 这些数据类型不可哈希
字典的key必须是不可变的数据类型,可哈希
字典的value可以是任意数据类型
字典的优点:二分查找去查询 储存大量的关系型数据
字典的特点:无序的
1.1 增:
dic = {'name':'lucy','sex':'woman','age':18}
dic['hight'] = 180 #没有键的时候,则添加
dic['age'] = 16 #字典中原本就有此键,则值会覆盖掉原来的
dic.setdefault('weight') #默认值是None
dic.setdefault('weight',150)
dic.setdefault('name','二哥') #键有的话不做任何改变,没有才添加
print(dic)
1.2删:
dic = {'name':'lucy','sex':'woman','age':18}
dic.pop('age') #有返回值 返回删除的键对应的值 参数必须写,不写则会报错,跟列表list有区别
print(dic)
print(dic.pop('djhs','没有此键')) #可设置返回值
dic.popitem() #随机删除 有返回值,返回元组形式删除的键和值
print(dic)
dic.clear() #清空字典
print(dic)
del dic['name'] #存在则删除,不存在则报错
print(dic)
del dic #删除字典
print(dic)
1.3改:
dic = {'name':'lucy','sex':'woman','age':18}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
print(dic2) #{'weight': 75, 'sex': 'woman', 'name': 'lucy', 'age': 18}
print(dic) #{'sex': 'woman', 'name': 'lucy', 'age': 18}
1.4查:
dic = {'name':'lucy','sex':'woman','age':18}
print(dic.keys()) #dict_keys(['name', 'sex', 'age'])
print(dic.values()) #dict_values(['lucy', 'woman', 18])
print(dic.items()) #dict_items([('name', 'lucy'), ('sex', 'woman'), ('age', 18)])
for i in dic:
print(i) #name age sex
for i in dic.values():
print(i) #woman lucy 18
for k,v in dic.items():
print(k,v)
# age 18
# sex woman
# name lucy
v1 = dic['name1']
# print(v1) #报错
print(dic.get('name1')) #None 没有这个键,不会报错 所以首选get
print(dic.get('name1','没有这个键'))
1.5字典嵌套
dic = { 'name':['张三','李四','王五'], 'info':{ 'addr':'beijing', 'date':'20171220' }, 'age':20 } dic['age'] = 22 dic['name'].append('马七') dic['info']['addr'] = dic['info']['addr'].upper() print(dic)
1.6删除下列字典中含有'k'的键对应的值
dic = {'k1':'v1','k2':'v2','a3':'v3'}
#方法一
dic1 = {} # 创建一个空的字典
for i in dic:
if 'k' not in i:
dic1.setdefault(i,dic[i]) #将不含‘k’的键以及对应的值添加到dic1中
dic = dic1
print(dic)
#方法二
l = [] #创建一个空的列表
for i in dic:
if 'k' in i:
l.append(i) #将含有‘k’的键追加到列表l中
for i in l: #变量列表l,每个i正好是字典中含有'k'的键,通过del删除该键及对应的值
del dic[i]
print(dic)
二、集合
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希的(集合是可变的数据类型)。
集合最重要的两个特点是:
a:去重,把一个列表变成集合,就自动去重了。
b:关系测试,测试两组数据之间的交集、差集、并集等关系。
2.1:集合的创建。
set1 = set({1,2,'hjm'}) # 创建方法一
set2 = {1,2,'hjm'} # 创建方法一
print(set1,set2) # {'hjm', 1, 2} {'hjm', 1, 2}
2.2:集合的增。
set1 = {'lucy','jim','lily','hello','world'}
# add
set1.add('张三')
print(set1)
# update: 迭代着添加
set1.update('Ab') #{'lucy', 'b', 'A', 'lily', 'hello', 'world', 'jim'}
set1.update([1,2,3]) #{1, 'lily', 'lucy', 2, 3, 'jim', 'world', 'hello'}
set1.update('中国') #{'lucy', '中', 'hello', 'world', 'lily', '国', 'jim'}
print(set1)
2.3:集合的删。
set1 = {'lucy','jim','lily','hello','world'}
#remove 删除一个指定元素
set1.remove('jim') # {'hello', 'world', 'lucy', 'lily'}
#pop 随机删除一个元素
set1.pop() # {'world', 'hello', 'lucy', 'lily'}
#clear 清空集合
set1.clear() # set()
#del 删除集合
del set1
print(set1)
2.4:集合的查。
set1 = {'a','bb','ccc','f','d'}
for i in set1:
print(i)
2.5:集合的其它操作
2.5.1交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set3 = set1 & set2
print(set3) # {4, 5}
2.5.2并集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set4 = set1 | set2
print(set4) # {1, 2, 3, 4, 5, 6, 7, 8}
2.5.3反交集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set5 = set1 ^ set2
print(set5) # {1, 2, 3, 6, 7, 8}
2.5.4差集
set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}
set6 = set1 - set2 #set1中独有的
print(set6) # {1, 2, 3}
2.5.5子集
set1 = {1,2,3}
set2 = {1,2,3,4,5}
set3 = {1,2,5,6}
print(set1 < set2) # True
print(set1 < set3) # False
2.5.6超集
set1 = {1,2,3}
set2 = {1,2,3,4,5}
set3 = {1,2,5,6}
print(set2 > set1) # True
print(set3 > set1) # False
2.5.7 frozenset不可变集合,让集合变成不可变类型
s = frozenset('barry') print(s,type(s)) # frozenset({'a', 'b', 'r', 'y'}) <class 'frozenset'>

浙公网安备 33010602011771号