字典
注意:遍历字典的时候不要添加/修改元素,那样会导致添加修改的元素重复遍历!
可变类型数据:列表、字典、集合(可以增删查改)
dict类型,{}表示,由键值对组成{key:value}
字典没有下标,键就是字典的索引
dic = {"name": "小明", "age": 18, "phone": "18900000000"}
规范:①键不能重复
②字典中的键只能使用不可变类型的数据(通常是字符串) (不可变类型:数值,字符串,元组)
③键对应的值可以是任何数据类型
1、索引取值
dic = {"name": "小明", "age": 18, "phone": "18900000000"} print(dic["name"])
结果:小明
2、增删查改
①添加元素
1、添加单个元素
dic = {"a": 11, "b": 22, "c": 33} dic["d"] = 99 print(dic)
结果:{'a': 11, 'b': 22, 'c': 33, 'd': 99}
2、update:添加多个元素
dic = {"a": 11, "b": 22, "c": 33} dic.update({"aa": 111, "bb": 222}) print(dic)
结果:{'a': 11, 'b': 22, 'c': 33, 'aa': 111, 'bb': 222}
②修改元素
dic = {"a": 11, "b": 22, "c": 33} dic["c"] = 99 print(dic)
结果:{'a': 11, 'b': 22, 'c': 99}
③删除元素
1、pop:删除键所对应的键值对(返回键对应的值)
dic = {"a": 11, "b": 22, "c": 33}
res = dic.pop("b")
print(res)
print(dic)
结果:
22
{'a': 11, 'c': 33}
2、popitem:删除最后一个添加的键值对(python3.5之后),以元组形式返回键值对
dic = {"a": 11, "b": 22, "c": 33}
res = dic.popitem()
print(res)
print(dic)
结果:
('c', 33)
{'a': 11, 'b': 22}
④查找元素
1、通过键进行索引取值
dic = {"a": 11, "b": 22, "c": 33} res = dic["c"] print(res)
结果:33
2、get:通过键获取对应的值
dic = {"a": 11, "b": 22, "c": 33} res = dic.get("c") print(res)
结果:33
3、其他方法
①获取字典中所有的键
dic = {"a": 11, "b": 22, "c": 33} res = dic.keys() print(res) print(list(res)) #可以转化成列表形式,看起来美观
结果:
dict_keys(['a', 'b', 'c'])
['a', 'b', 'c']
②获取字典中所有的值
dic = {"a": 11, "b": 22, "c": 33}
res = dic.values()
print(res)
print(list(res))
结果:
dict_values([11, 22, 33])
[11, 22, 33]
③items():获取字典的键值对,每个键值对作为一个元组
dic = {"a": 11, "b": 22, "c": 33} print(dic.items()) print(list(dic.items()))
结果:
dict_items([('a', 11), ('b', 22), ('c', 33)])
[('a', 11), ('b', 22), ('c', 33)]
4、关于字典定义的扩展方法
①{key:value}形式定义
dic = {"a": 11, "b": 22, "c": 33}
②使用dict转换[(key,value),(key,value)]这种数据类型
dic2 = dict([('a', 11), ('b', 22), ('c', 33), ('d', 44)]) print(dic2)
结果:{'a': 11, 'b': 22, 'c': 33, 'd': 44}
③dict(key=value,key=value)
#第三种:dict(key=value,key=value) dic3 = dict(name="musen", age=18, gender="男") print(dic3)
结果:{'name': 'musen', 'age': 18, 'gender': '男'}
集合
集合:set类型,通过{}表示,{value,value}
集合的特性:
①不能存在重复数据
set2 = {1, 1, 1, 1, 2, 2, 3, 4, 5, 6, 3, 2, 4, 5, 6} print(set2) #结果:{1, 2, 3, 4, 5, 6}
②数据为不可变类型,但集合是可变类型
③无序的(和字典一样),没有下标索引
④集合是可变类型的数据
⑤增删查改
集合的应用:
1、对数据去重
# 字符串去重 s = "dfghjkldfghjkdfghjk" s1 = set(s) #将字符串转为集合(去重) s2 = "".join(s1) #集合重新转为字符串 print(s2) 结果:fgdklhj
# 列表去重 li = [1, 1, 1, 2, 3, 4, 5] res = list(set(li)) print(res) 结果:[1, 2, 3, 4, 5]
2、把数据放在集合里,用来区分数据是否可变,可变运行会报错
s6 = {111,99.99,True,"python",(1,2)} #不报错 s7 = {{1,2,3}} #报错
数据类型总结
#字符串不可变类型举例 n = 'python' res = n.replace("p","ttt") print(res) print(n) 结果:tttython python
数据的嵌套
# 列表里嵌套列表 li = [[1, 2, 3], [1, 2, 3, [1, 'python', '333']]] res = li[1][3][1] print(res) 结果:python
# 列表嵌套字典 li2 = [{"name": "小明", "info": [1, 2, 3, 4]}, {"name": "无名"}, {"name": "欧阳"}]