python基础学习(字典 和 集合)

Python(字典篇 and 集合)

说到字典,我想到大部分初学者第一时间想到的就是新华字典,但是现在要讲的是在python当中的字典,字典具有无序性,可变性,可迭代性,可增减性。

那第一我们先说说字典的结构:

dict_1={"key":value}

注意:key一定要是不可变元素。

所谓字点常常由俩个元素组成;key(键),value(值),可以想象一下,字典就想现实中的新华字典一样,而key就像是平时查字典时的首字母,身份证一样;而value就像是身份证中包含的身份信息一样,只有你向字典输入你的key才会返回你要的信息,所以当我们需要字典里所含的值时我们可以输入 字典名称【key】这个就=键所含的值。

比如:

dict_1={"小明":"18岁","小华":"20岁"} #字典的建立
print(dict_1["小明"]) #此时电脑输出value是18岁

当们知道了字典的结构后,就要学会字典的建立了,字典的建立常常有俩种方法。

直接建立

比如:

dict_1={"key":value}

这种方法比较简单也比较直接,能清晰的知道直接的key与value。

利用 dict() 函数

dict是python中的一种内置函数,大白话就是要记得!

比如:

dict_1=dict(key=value)
print(dict_1)

效果就是:

{"key":value}

这中方法个人认为比较简便实用。

看以下代码:

li=[1,2,3,4,5,6,7,8,9]
li2=[1,2,3,4,5,6,7,8,9]
print(dict(zip(li,li2)))

此时输出的是:

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

zip()函数可以将可迭代对象重新组成打包为然后存储在计算机当中,注意是存储并不是可以立马使用,他就像刚出土的矿石一样需要一定的加工后才可以使用,可以用list(),dict(),tuple(),set()等函数进行一个加工(类型转换)才可以由输出函数进行输出。

注意:如果zip()函数整合的对象不能一 一对应的话那么多出来的元素会被自动删除。

可迭代对像是什么呢?

所谓可迭代对象就是能一个一个提取里面元素的东西,可以用for循环进行遍历的类型。

字典的元素增加

像在列表当中有append() 和 extend()函数一样,字典也有自己的方法:

update(key=value) 函数

dict_1={} #这是一个空字典
print(dict_1.update("小华":18)) #使用update()进行增加

运行结果:

{"小华":18}

修改字典

修改字典通常会使用俩种方法:

update() 函数法

这函数不仅有增加的用法,还有修改的方法;当key在字典当中已经存在的话,就会将key中的值进行一个替换。

索引法替换

该方法可以用key对字典进行一个索引然后进行替换。

实例:

dict_1={"小明":"18岁","小华":"20岁"} #字典的建立
dict_1["小明"]="19岁" #进行替换
print(dict_1)

输出结果:

{"小明":"19岁","小华":"20岁"}

删除元素

有增加那么当然有删除了。

del

该函数可以通过key对字典元素进行删除。

del 列表名称【key】就可以对字典进行一个删除处理:

dict_1={"小明":"18岁","小华":"20岁"} #字典的建立
del dict_1["小明"] #进行删除
print(dict_1)

输出结果:

{"小华":"20岁"}

pop(key, default) 方法

pop(key,default)方法也可以对字典进行一个删除处理:
补充一点,注意:pop不但完成了删除字典中元素的这个动作,还将删除的元素做成了一个返回值,想看到删除的是什么,可用print()来输出出来
dict_1={"小明":"18岁","小华":"20岁"}
print(dict_1.pop("小明","不存在"))

注意如果使用pop()方法中的key不存在,此时就要再设置一个参数,防止报错哦!

比如:

li=[1,2,3,4,5,6,7,8,9]
li2=[1,2,3,4,5,6,7,]
dict=dict(zip(li,li2))
print(dict)
print(dict.pop(10,"none")) #此时的不存在

那么输出结果就是:none。

当然这个可以自己设置不一定要是none。

popitem() 方法

在老版本的python当中是随机删除一组键和值,但在python3.7后就变成了固定的删除最后一个删除的键和值。

dict_1={"小明":"18岁","小华":"20岁"}
dict_1.popitem() #3.7python后就是删除"小华":"20岁"

结果是:

{"小明":"18岁"}

clear() 方法

其意义就是删除字典中所的元素最后变成一个空字典{}。

copy() 方法

copy()方法可以叫做浅复制,所谓浅复制就是复制后的字典不受原字典的删除或增加影响:

dict_1={"小明":"18岁","小华":"20岁"}
dict_2=dict_1.copy()
del dict_1["小明"]
print(dict_1)
print(dict_2)

结果是:

{"小华":"20岁"}

items(),keys(),values()

items()

可以将字典中的所有key and value全部提取出来:

dict_1={"小明":"18岁","小华":"20岁"}
print(dict_1.items)

结果:

dict_items([('小华', 18), ('小明', 19)])

可以通过for循环进行遍历提取key and value:

dict={"小华":18,"小明":19}
key=[] #创建空列表,当作一个容器来接受变量来放入列表
value=[] #以上同理
for k,v in dict.items(): #通过for循环进行遍历逐步提取出dict.items中的各个元素,注意:这里因为有俩个变量所以提取也是俩个俩个的提取
key.append(k) #append()用该内置函数来将变量提取到list容器里面
value.append(v) #与上同理
print(key) #不用说了很简单
print(value)

结果是:

["小华","小明"]
[18,19]

也可以进行一个判断字典里面是否含有这个元素:

dict={"小华":18,"小明":19}
key=[] #创建空列表,当作一个容器来接受变量来放入列表
value=[] #以上同理
for k,v in dict.items(): #通过for循环进行遍历逐步提取出dict.items中的各个元素,注意:这里因为有俩个变量所以提取也是俩个俩个的提取
if k=="小华": #进行判断
x="存在"
else:
x="不存在"
print(x)

结果:

存在

keys() 方法

keys()方法就是获取字典中的所有key:

这个也可以同理写出判断是否有这个key在字典里面:

多说无益,直接来:

dict_1=dict(小华=18,小明=19)
print(dict_1)
print(dict_1.keys())
i=0
li=[]
pople=input("你要查询的人")
for i in dict_1.keys(): #通过for循环进行遍历
li.append(i)
if pople in li:
print("存在")
else:
print("None")
print(li)

values() 方法

values()方法的使用就如同keys差不多,只不过输出的全部都是字典里的值。

嵌套式字典

顾名思义就是字典里面装了一个小字,可以有多个。

dict_2={"小明":{"老家":"广州的","身高":180},"小华":{"老家":"北京的","身高":185}}

这就是一个嵌套式字典,像是这种嵌套式字典可以用来存储海量数据,可以配套使用items(),keys(),values()等函数使用,也可以用循环进行遍历。

def x(name, home, shengao):
dict_2={"小明":
{"老家":"广州","身高":180},
"小华":
{"老家":"北京","身高":185}
}

这就是一个嵌套式字典,像是这种嵌套式字典可以用来存储海量数据

list_1=[]
list_2=[]
if name in dict_2:
for k,v in dict_2[name].items():
list_1.append(k)
list_2.append(v)
print(list_2)
if home in list_2 and shengao in list_2:
print(dict_2[name])
return True
else:
return False
#进行判断

name=input("你的姓名")
home=input("老家:")
shengao=int(input("身高:")) #小心因为字典里存储的数据是整形注意类型转化
q=x(name,home,shengao)
print(f"是否正确{q}")

fromkeys() 方法

用fromkeys方法建立的字典都有一个共同特点就是他们的key可以不同但是他们的值是一样的,当值相同但是key不同的时候可以用fromkeys([key],value)来创建字典来使用。

函数的结构:

dict_1=fromkeys([key],value)

注意value只能有一个。

print(dict_1)

输出结果:

{"key":value,"key":value}

集合

说到集合就会让人像到高中数学中的集合其实大差不差,python的集合与高中数学的集合大差不差,可以说是非常的像,说了这么多,那就说说集合的结构吧。

集合的结构

{元素}

集合的特性是无序性,集合里面的元素是没有顺序的,具有可迭代性,且里面的元素必须是不可变的元素。那就说说什么是不可变的元素,所谓不可变元素就是定值不能被改变,且还有唯一性,就是其中的元素不能重复,如果重复就会被自动的删除为一个。

集合的建立

set()

set()函数,建立的是可变集合,就是其中的元素可以被改变,可将可迭代对象转换成集合;且自动的去掉重复元素。

li=[1,1,2,3,4,5,6,]
print(set(li)) #自动的删除重复元素,将列表这个可迭代对象转换成集合

输出结果:

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

frozenset()

其建立的集合是不可变的,也就是不可变类型,可以作为字典的key,但里面的元素不能被增加或减少,一句话就是不能被改变,当然可以被for循环遍历。

li=[1,1,2,3,4,5,6,]
set_1=frozenset(li)
set_2=set()
for i in set_1: #利用for循环进行一个遍历操作
set_2.add(i)
print(set_2)
list_3=list(set_2) #将遍历好的集合转换成列表
print(list_3)

输出结果:

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

总结:如果列表当中有相同的元素可将其转换成集合再转换为列表。

直接建立

jihe={元素}

注意:{}是空字典不是空集合。

jihe={1,2,3,4}
print(jihe)

输出结果是:

{1,2,3,4}

可变集合的改变

add() 函数与 update

set_1={1,2,3,4}
print(set_1.add(5))
print(set_1.update(5))

输出结果:

{1,2,3,4,5}

注意:其集合一定要是可变集合。

pop() 函数的使用

这个函数随机删除集合中的元素。

remove() 函数

set_1={1,2,3}
print(set_1.remove(1))

结果:

{2,3}

set_1={1,2,3}
print(set_1.remove(0))

结果:抛出异常。

discard() 方法

set_1={1,2,3,}
print(set_1.discard(1))

输出结果:

{2,3}

set_1={1,2,3}
print(set_1.discard(0))

输出结果:None。

从这里可以看出:discard()函数如果删除了一个集合里面没有的元素,不会有影响代码的运行。

集合运算符

分别有并集(|)、补集(^)、交集(&)、差集(-)。

并集

与数学当中的集合一样:都是两集合的归总。

实例:

set_1={1,2,3}
set_2={4,5,6}
print(set_1|set_2)

结果是:

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

补集

在python中的补集是俩个集合不同时拥有的的元素集合叫做补集。

set_1={1,2,3}
set_2={4,5,6}
print(set_1^set_2)

结果是:

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

交集(&)

与补集正好相反,交集是俩集合共有的元素:

set_1={1,2,3}
set_2={4,5,6}
print(set_1&set_2)

结果:

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

差集(-)

就是把其中一个集合独有元素组成一个新的集合。

set_1={1,2,3}
set_2={4,5,6}
print(set_1-set_2)

结果是:

{123}

发现很明显那个集合在-好之前就输出其独特的元素。

子集与真子集;超集与真超集

当set_1>=set_2时输出为True,说set_1是set_2的超集,set_2是set_1的子集。

当set_1>set_2就说set_1是set_2的真超集,反之就是真子集。

集合实例

def wordsbook(): #定义函数

print("Welcome to the Words Book")
print("单词本*")
print("增加单词,删除单词,查看单词")
li=["增加单词","删除单词","查看单词"]
#构建平台界面

words_list=set(())
#建立集合

判断语句防止输入不相关的内容

while(True):
choose=input("你的功能:")
if choose not in li:
print("请重新输入")
else:
break

判断用户的使用功能:

if chooseli[0]:
words=input("你想添加的单词:")
if words in words_list:
print("这个单词你已经存过了")
print(words_list[words])
else:
words_list.update({words})
print(words_list)
if choose
li[1]:
del_words=input("你想删除的单词")
if del_words in words_list:
words_list.discard(del_words)
print(words_list)
elif del_words"全部":
words_list.clear()
else:
print("里面没有这个单词")
if choose
li[2]:
print(words_list)

wordsbook()

用while循环来实现多次使用该函数(程序)
while True:
#判断语句来获取用户使用意向
shiyong=input("请问还要使用吗")
if shiyong=="yes":
wordsbook()
else:
print("感谢使用")
break

posted @ 2026-10-30 02:15  _LP-ZX  阅读(13)  评论(0)    收藏  举报