Python 集合(Set)、字典(Dictionary)
? 集合(Set)集合是无序的,无序也就没有索引,不能进行索引相关的操作。无序,python解释器就不能通过索引(位置)区分集合中的相同元素,所以集合中不能有相同的元素。 集合用大括号{? }表示。 集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。 a={1,1,3} print(a) #{1,3} 会自动去掉重复的元素 a={1,"ok"} #数据类型可以不同 print(a) #{1,‘ok‘} a={1,"ok",[1,2]} #报错 集合中元素的数据类型可以不同,但集合中不能嵌套列表、元组、集合、字典。 print(a) ? 集合可以使用in、not? in进行成员判断。? ? 集合之间可以进行集合运算a={1,2,3} b={1,6} print(a|b) #求并集 {1,3,6} print(a&b) #求交集 {1,2} print(a-b) #求差集(a中有,b中没有) {3} print(a^b) #并集减去交集,即把a、b独有的元素组成一个集合 {3,6} |? ?是python的逻辑或,a或b,即并集 &? 是python的逻辑与,a且b,a、b中都要有,即交集 ? ? python的逻辑运算符
? ? ? ? 字典(Dictionary)字典是无序的。 字典中一个键值对就是一个元素。因为是用key来标识元素,所以同一个字典中,key不能相同(不会报错,但后面的值会覆盖前面的值)。 字典中的key、value的数据类型可以不同,但key必须是不可变的数据类型,比如数字、字符串、元组。 字典用大括号{? }表示。 a={"name":"张三","age":18} #key、value之间冒号分隔,键值对之间逗号分隔 a={1:"张三","age":18,"score":(100,90,99)} #字典中的key可以是不同的类型,但key必须是不可变的数据类型。value可以是任何类型。 a={"name":"张三","name":"李四"} #key不能相同,相同时,后面的值会覆盖前面的值 print(a) #{‘name‘: ‘李四‘} ? ? 可通过key来操作字典中的元素a={"name":"张三","age":12,} print(a["name"]) #张三 如果key是数字、元组,以 字典变量名[数字|元组] 的方式操作,key不加引号,加引号表示key是字符串。 a["age"]=10 #如果key已存在,这是修改对应的值 a["score"]={"Chinese":90,"math":100} #如果key不存在,这是往字典中添加一个键值对 print(a) #{‘name‘: ‘张三‘,‘age‘: 10,‘score‘: {‘Chinese‘: 90,‘math‘: 100}} del a["score"] #删除一个键值对 print(a) #{‘name‘: ‘张三‘,‘age‘: 10} a.clear() #清空字典,会删除所有的键值对,只保留一个空字典 print(a) #{} del a #删除a这个变量 print(a) #报错 ?字典通过key来标识、区分元素,不需要索引,所以字典是无序的。 ? ? 字典的常用函数
?字典是可变的,如果以上操作修改了字典,字典本身会改变。 ? ? ?copy()使用示例:dict1={"name":"张三",99)} dict2=dict1.copy() print(dict2) #{‘name‘: ‘张三‘,‘age‘: 18,‘score‘: (100,99)} ? ? ? setdefault()使用示例:dict={"name":"张三"} print(dict.setdefault("age",18)) #18 print(dict) #{‘name‘: ‘张三‘,‘age‘: 18} ? ?dict.fromkeys(seq[,value])使用示例:a=[1,3] #列表 b=(1,3) #元组 c="ok" #字符串 #参数必须是序列 print(dict.fromkeys(a)) #{1: None,2: None,3: None} print(dict.fromkeys(b)) #{1: None,3: None} print(dict.fromkeys(c)) #{‘o‘: None,‘k‘: None} #以序列中的元素作为key,字符串的元素是单个字符。 #为设置值时,默认值是None print(dict.fromkeys(a,"ok")) #{1: ‘ok‘,2: ‘ok‘,3: ‘ok‘} #设置的值是所有key的值。 #设置的值可以是任何类型 ? ? ? ? ? 小结1、python中,序列(字符串、列表、元组)是有序的,集合、字典都是无序的。 有序的就有索引,可进行索引相关的操作,可用索引来标识、区分元素,所以元素可重复。 集合中不能有重复的元素,字典中不能有重复的key。 ? ? 2、数字、字符串、元组是不可变的,对它们操作,返回的往往是副本,本身不会改变。 列表、集合、字典都是可变的,对它们操作,往往就是对本身进行操作。 (python也提供了不可变的集合) ? ? 3、列表用[]表示,元组用()表示,列表、元组都有索引、可进行索引相关操作,区别是列表可改变,元组不可改变。 使用内置函数list()、tuple()可实现列表、元组的相互转换。 可以先把列表转换为元组,来保护列表中的元素不被修改,操作完再转换回列表。 可以把元组转换为列表,达到修改元组的目的,操作完再转换回元组。 ? ? 4、集合、字典都是用{}表示,{}表示空字典,空集合要使用set()来创建。 ? ? 5、字符串、列表、元组、集合、字典都具有多个元素,它们都可以使用python内置函数 len(x) 来获取x的元素个数。 ? ? 6、类型转换
返回的均是副本,不会修改参数本身。 格式:目标类型(需要转换的变量/值) ? ?字符、ASCII码值转换示例: print(chr(65)) #A print(ord("A")) #65 ? ? ? 7、使用python的内置函数eval(str)可执行字符串中的python语句 eval("print(1)") #输出1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |