更多优质内容
请关注公众号

Python基础教程(六) Python的六大数据类型之字典和集合-张柏沛IT博客

正文内容

Python基础教程(六) Python的六大数据类型之字典和集合

栏目:Python 系列:Python基础教程系列 发布时间:2019-10-29 21:35 浏览量:2250

字典:(相当于php中的关联数组,js中的json

 

PS:字典不是序列类型,而是映射类型

 

创建字典:

# 1.直接定义
dict1={"a":1,"b":2,"c":3}
# 类似于json

# 2.使用dict()函数
dict1=dict((("a",1),("b",2),("c",3)))      #传一个二位元组

dict1=dict(("a",1),("b",2),("c",3))      #不行,因为dict只有一个参数

dict1=dict(a=1,b=2,c=3)      #也可以,但是要注意,这样定义时键不要加引号
#访问:
dict1["a"]

#添加元素或者修改元素:
dict1["a"]=100
dict1["e"]=5        #添加

当然它和json不同的是,字典的键也可以是数字

#字典的方法:
dict1.fromkeys()      #创建一个新的字典

#如:
dict1.fromkeys((1,2,3))
#得到:{1:None,2:None,3:None}

dict1.fromkeys((1,2,3),"a")
#得到:{1:"a",2:"a",3:"a"}

dict1.fromkeys((1,2,3),("a","b","c"))
#得到:{1:("a","b","c"),2:("a","b","c"),3:("a","b","c")}

dict1.fromkeys(range(10),"hello")
#得到...

 

字典的遍历:

dict1={"a":1,"b":2,"c":3}

#遍历所有的值
for val in dict1:
	  print(val)

#或者

for val in dict1.keys():
	  print(val)	
#会遍历出所有键:a,b,c

for val in dict1.value():
	  print(val)
	  
#会遍历出所有值:1,2,3

for val in dict1.items():
	  print(val)
#会遍历出所有项,每个项以元祖的形式呈现:
#('a', 100)
#('b', 2)
#('c', 3)
#('e', 5)

#可以这样
for i,v in dict1.items():
	  print(i,v)
	  
#a 100
#b 2
#c 3
#e 5

 

如果访问字典中不存在的元素:

dict1["z"]

会报错

 

如果不想他报错,可以这样:

dict1.get("z")

没有就会返回None

#还可以设置默认值
dict1.get("z",26)

#判断某下标的元素是否存在
print("z" in dict1)

#将字典清空:
dict1.clear()
dict1={}        #不推荐,二者有区别,前者可以将该字典的所有引用干掉。

# 浅拷贝
dict2=dict1.copy()
#他和dict2=dict1的区别是,后者是同一个引用

# 随机弹出一个元素
dict1.popitem()
# 弹出的是一个元祖
# 字典的元素是没有顺序的。

# update()  用一个字典更新另一个字典的元素
dict1={"a":1,"b":2,"c":3}
dict2={"c":30}
dict1.update(dict2)
print(dict1)
# 得到:{'a': 1, 'b': 2, 'c': 30}

 

字典推导式(有下标):{下标:值(这个值是个表达式) for i in xxx}

例如:

{i:i%2==0 for i in range(10)}

得到:

{0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

 

将字典的下标和值对调:

list1={'a': 1, 'b': 2, 'c': 30}

list1={v:k for k,v in list1.items()}

 

 

 

集合:

集合也是用{}定义,但是他没有下标,只有值。所以就无法使用索引来访问里面的值

set1={1,2,3,4,5}

他的特性是唯一,里面的元素都是唯一的:

set1={1,2,3,4,5,5,4,3,2,1}

此时不会报错,而是会将里面的重复元素干掉!

set1=set([1,2,3,4,5])

 

其实与其说set()方法是定义集合,还不如说他是将其他类型转为集合类型。

str()/int()/list()/tuple()/dict()都是这样

 

所以如何将[0,1,2,3,4,5,5,3,1]中重复的元素干掉呢

list(set([0,1,2,3,4,5,5,3,1]))

 

即可

 

当然也可以这样:

list1=[0,1,2,3,4,5,5,3,1]
temp=[]
for val in list1:
    if val not in list1 :
	    temp.append(val)

	print(temp)

set可以遍历,set也可以通过in not in 来判断某值是否在集合中

 

#添加一个元素
set1.add(元素)

#干掉
set1.remove(元素)

#定义一个不可变元素:
set1=frozenset([1,2,3,4,5])

然后这个集合就不可以使用addremove方法

 

集合推导式:

{i的表达式 for i in xxx}

如:

{i for i in [1,2,3,4,5,6,5,4,3,2,1]}

得到

{1, 2, 3, 4, 5, 6}

 

 




更多内容请关注微信公众号
zbpblog微信公众号

如果您需要转载,可以点击下方按钮可以进行复制粘贴;本站博客文章为原创,请转载时注明以下信息

张柏沛IT技术博客 > Python基础教程(六) Python的六大数据类型之字典和集合

热门推荐
推荐新闻