字典
可变类型数据:列表、字典、集合(可以增删查改)
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": "欧阳"}]