字典应用场景
字典是不支持下标的,数据和数据顺序没有关系,它以键值对的形式出现
创建字典
符号是大括号,字典里的数据必须是键值对 key:value,中间用逗号隔开
# {} 键值对 键值对之间用逗号分开
# 1、创建有数据的字典
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}
# print(dict1)
# print(type(dict1))
# 2、创建空字典:两种方法
dict2 = {}
print(type(dict2))
dict3 = dict()
print(type(dict3))
常见操作
增
因为字典是不支持下标的,所以中括号中的是key
字典序列【key】 = 值
删
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}
# del 删除字典或者指定键值对
# del dict1
# print(dict1)
del dict1['name']
print(dict1)
# clear() 清空字典还会留下一个空的字典,del就把整个字典都删了
dict1.clear()
print(dict1)
改
和新增是一样的
查
key值查找
字典序列[key]:如果key存在就返回他的值,否则报错
get()
get(key,默认值):如果key不存在返回第二个参数,如果不写的话就是none
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}
# 1、key值查找
print(dict1['name'])
# 2、函数
print(dict1.get('gender'))
print(dict1.get('id'))
keys()
value()
items()
dict1 = {'name': 'tom', 'age': 20, 'gender': '男'}
# 1、key值查找
print(dict1['name'])
# 2、函数
print(dict1.get('gender'))
print(dict1.get('id')) # 如果key不存在就返回none
print(dict1.get('id', 'uncertain')) # 如果key不存在就返回uncertain
print(dict1.keys()) # dict_keys(['name', 'age', 'gender'])
# # 查找字典中所有的key,返回可迭代对象
print(dict1.values()) # dict_values(['tom', 20, '男'])
# # 查找字典中所有的值,返回可迭代对象
print(dict1.items()) # dict_items([('name', 'tom'), ('age', 20), ('gender', '男')])
# 查找字典中所有的键值对,返回可迭代对象,元组数据1是字典key,数据2是key对应的值
循环遍历
按key、value、键值对、进行遍历
集合
集合的用途
1、去重
2、关系运算:一个整体和另一个整体找关系
局限性
无法保证被去重对象的局限性,从被去重对象中取出的元素必须都为不可变类型
创建
使用{ }或者set(),要创建空集合只能set()
集合里的 数据是没有重复的,如果要求数据不能重复,就存到集合里去,如果要不能改变就存到元组中去
# 1、创建有数据的集合
s1 = {10, 20, 30, 40, 50}
print(s1)
{50, 20, 40, 10, 30}
注意:集合是没有顺序的,所以不支持下标操作
集合是有去重的功能
常见操作方法
增
add()、update()
s1 = {10, 20}
# add---增加单一数据到集合
# s1.add(100)
print(s1)
# add追加数据序列会报错的
# update---增加数据序列到集合
s1.update([100, 200, 300])
s1.update([100, 200, 300], [500, 600]) # 这种追加方式相当于写在一个序列中
s1.update([100]) # 数据序列只有1个也没问题
print(s1)
删
remove----删除指定数据,如果不存在则报错
discard----删除指定数据,如果不存在也不报错
pop----随机删除某个数据并返回这个数据
s1 = {100, 200, 10, 10, 300, 20, 500, 600}
# remove
s1.remove(10)
s1.remove(10)
print(s1)
1、remove删除不存在的数据会报错
2、即使s1中有两个10,集合自动将其合并成一个,然后再做删除,并不是第一个remove删一个,第二个remove再删一个
查找
in()、not in()
逻辑正确返回true
s1 = {100, 200, 10, 10, 300, 20, 500, 600}
print(10 in s1)
print(10 not in s1)
举例说明关系运算
交集
并集
差集:有方向,s1-s2和s2-s1是不一样的:
对称差集:把两个集合共同的东西挖掉,剩下来的:s1 ^s2
父子集:
父集:s1 >= s2,即s1包含s2
子集:s1<= s2
Python3乱码问题
加文件头:
#coding:utf-8