Python 基础五(数据类型之字典用法)
一、补充内容----
字符串、和列表的相互转化
1、join -----list >>>>>> str
# join l1 = ['alex','wusir','taibai'] s = '_'.join(l1) print(s) # alex_wusir_taibai-----可以使列表转换成字符串
2、split------- str >>>>>>list
#split l2 = s.split(',') print(l2) # ['alex', 'wusir', 'taibai'] ------可使字符串转换成列表
range----在py2和py3的区别
试题讲解-----过滤敏感字
开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]
则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;如果用户输入的内容没有敏感词汇,
则直接添加到上述的列表中。
li = ["苍老师", "东京热", "武藤兰", "波多野结衣"] l2 = [] comtent = input('请输入评论:') # for i in li: if i in comtent: # comtent = comtent.replace(i,len(i)*'*') # l2.append(comtent) print(l2)
二、字典 dic
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
放大量的数据类型,且关联性较强.
字典的key 与value
key:value 键 值
key 是唯一的,且是不可变数据类型
value 是可以是任意数据类型
在python3.5之前字典都是无序的,3.6以后都是有序的
字典的增删改查
1、增
dic['key'] = value
dic = {"name": "jin", "age": 18, "sex": "male"}
dic['name2'] = '依米'
print(dic)
输出
{'name': 'jin', 'age': 18, 'sex': 'male', 'name2': '依米'}
dic['name'] = '王子'
print(dic)
输出
{'name': '王子', 'age': 18, 'sex': 'male'}
# 有key就覆盖,没有key就添加
dic.setdefault
dic.setdefault('hobby')
print(dic)
dic.setdefault('hobby','开船')
print(dic)
dic.setdefault('name','太白')
print(dic)
输出
{'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': None}
{'name': 'jin', 'age': 18, 'sex': 'male', 'hobby': '开船'}
{'name': 'jin', 'age': 18, 'sex': 'male'}
#有key不变,没有key才添加,不加value,输出None.
2、删
pop 按key删除,有返回值
dic.pop('sex') print(dic)------{'name': 'jin', 'age': 18} ret = dic.pop('sex') print(ret)-------male ret = dic.pop('sex1','没有此键') print(ret)--------没有此键
清空 clear
清空列表中的内容
dic.clear() print(dic)-----{ }
del ----删除字典,删除键值对
del dic print(dic) 报错
del dic['name']
print(dic)
输出
{'age': 18, 'sex': 'male'}----删除键值对
popitem() -----随机删除
有返回值
ret = dic.popitem() print(ret) print(dic) 输出 ('sex', 'male') {'name': 'jin', 'age': 18}
3、改
dic['key'] = value, 有key 就覆盖.
update---------将dic的键值对,覆盖,添加到dic2 中,dic不变
dic = {"name":"jin","age":18,"sex":"male"} dic2 = {"name":"alex","weight":75} dic2.update(dic) print(dic) print(dic2) 输出 {'name': 'jin', 'age': 18, 'sex': 'male'}--不变 {'name': 'jin', 'weight': 75, 'age': 18, 'sex': 'male'}--添加覆盖到dic2
4、查
dic = {"name":"jin","age":18,"sex":"male"} print(dic['name'])--------jin print(dic['name2'])------报错
dic.get()----有key输出,没有key返回None,可以添加返回值
dic = {"name":"jin","age":18,"sex":"male"} print(dic.get('name')) print(dic.get('name2')) print(dic.get('name2','没有此键值对')) 输出 jin None 没有此键值对
三、其他用法
1、分别赋值
a,b = 1,2 print(a,b) # a = 1 b = 3 一行代码,让a,b值互换 a = 1 b = 3 a,b = b,a print(a,b) a,b = ['alex','wusir'] print(a,b) a,b = ('alex','wusir') print(a,b)
2、取元素中的key 和 value
dic = {"name":"jin","age":18,"sex":"male"} keys = dic.keys() print(keys,type(keys)) # 只取键 dict_keys(['name', 'age', 'sex']) <class 'dict_keys'> k = list(keys) # 可以转换成列表 print(k,type(k)) ['name', 'age', 'sex'] <class 'list'> values = dic.values() print(values) #只取值 dict_values(['jin', 18, 'male']) items = dic.items() print(items) #取键值对 dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])
3、 在for循环中运用
dic = {"name":"jin","age":18,"sex":"male"} for k in dic: print(k)-------# 分别只取 键 for k in dic.keys(): print(k)------# 分别只取 键 for v in dic.values(): print(v)------# 分别只取值 for k,v in dic.items(): print(k,v)----# 取键和值 for k in dic: print(k,dic[k]) -----# 取键和值
四、字典的嵌套
字典内含有字典
dic = {
'name':'金鑫',
'name_list':[1,2,3,'李杰'],
1:{
'python10':['小黑','萌哥'],
'老男孩':{'name':'oldboy','age':56}
}
}
#1,[1,2,3,'李杰']追加'wusir'
# 2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
# 3, {'name':'oldboy','age':56} 添加一个键值对,hobby:男人
练习
# 1,[1,2,3,'李杰']追加'wusir'
dic['name_list'].append('wusir')
print(dic)
#2, ['小黑','萌哥'] 小黑 萌哥中间 插入一个花哥
l = dic[1]['python10']
l.insert(1,'花哥')
print(dic)
# 3, {'name':'oldboy','age':56} 添加一个键值对,hobby:男人
dic[1]['老男孩']['hobby'] = 'man'
print(dic)