Python第六课 字典和集合

Posted 笔触狂放

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python第六课 字典和集合相关的知识,希望对你有一定的参考价值。

在python中字典是唯一的映射类型,映射是数学上的一个术语,指两个元素集之间元素相互“对应”的关系。与Java中的Map集合很类似。映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式类获取相应位置的值,一般索引值与对应位置存储的数据是毫无关系的。

brand=["李宁","耐克","阿迪达斯","Python"]
slogan=["一切皆有可能","Just do it","Impossible is nothing","让编程改变世界"]
print("计算机科学的口号是",slogan[brand.index("Python")])
#运行结果: 计算机科学的口号是 让编程改变世界

两列表的索引和相对的值是没有任何关系的,唯一有联系的就是两个列表间,索引号相同的元素是有关系的。

6.1 字典

6.1.1 创建和访问字典

#字典的创建
dict1="李宁":"一切皆有可能","耐克":"Just do it","阿迪达斯":"Impossible is nothing","Python":"让编程改变世界"
print(dict1)
print("计算机科学的口号是",dict1["Python"])
运行结果: 
    '李宁': '一切皆有可能', '耐克': 'Just do it', '阿迪达斯': 'Impossible is nothing', 'Python': '让编程改变世界'
	计算机科学的口号是 让编程改变世界

通过以上的案例可以发现,python中的字典的定义与Java中的Map类似,与Json格式也非常类似。

字典的使用很简单,以大括号作为标志性符号,字典是以键值对的方式作为映射关系一一对应,但字典的键必须独一无二,而值可以取任何数据类型。

dict是字典的类名。

#字典的初始化
#定义空字典
dict2=
print(type(dict2))#<class 'dict'>
dict3=dict((('a',70),('b',170),('c',30),('d',50),('e',60)))
print(dict3)#'a': 70, 'b': 170, 'c': 30, 'd': 50, 'e': 60

以上案例中dict()函数中只能有一个元素,因此将多个元素封装成一个元组作为一个元素传入dict()函数中,也可以用以下方式来定义字典:

dict4=dict(a=70,b=170,c=30,d=50,e=60)
print(dict4)
运行结果: 'a': 70, 'b': 170, 'c': 30, 'd': 50, 'e': 60

也可以给字典中进行追加数据

dict4["f"]=100
dict4["g"]=200
print(dict4)
运行结果: 'a': 70, 'b': 170, 'c': 30, 'd': 50, 'e': 60, 'f': 100, 'g': 200

这里总结一些创建字典的六种方式:

a=dict(one=1,two=2,three=3)
b="one":1,"two":2,"three":3
c=dict(zip(["one","two","three"],[1,2,3]))
d=dict("one":1,"two":2,"three":3)
e=dict([("one",1),("two",2),("three",3)])
f=dict((("one",1),("two",2),("three",3)))
print(a==b==c==d==e==f)
输出结果为: True

6.1.2 字典的各种内置方法

fromkeys()函数该方法用于创建并返回一个新的字典,有两个参数,第一个参数是字典的键,第二个参数是可选的,是传入键对应的值。如果不提供值,那么默认是None。

dict1=
print(dict1.fromkeys((1,2,3)))#1: None, 2: None, 3: None
print(dict1.fromkeys((1,2,3),"Python"))#1: 'Python', 2: 'Python', 3: 'Python'
print(dict1.fromkeys((1,2,3),("one","two","three")))
#1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')

该函数将("one","two","three")作为一个元素,将该元素传递给三个索引。

keys(),values()和items()函数的用法

dict2=
#快速赋值为32个赞
dict2=dict2.fromkeys(range(32),"赞")
print(dict2)
#获得字典的所有键
print(dict2.keys())
#获得字典的所有值
print(dict2.values())
#获得字典的所有键值对
print(dict2.items())

运行结果:

0: '赞', 1: '赞', 2: '赞', 3: '赞', 4: '赞', 5: '赞', 6: '赞', 7: '赞', 8: '赞', 9: '赞', 10: '赞', 11: '赞', 12: '赞', 13: '赞', 14: '赞', 15: '赞', 16: '赞', 17: '赞', 18: '赞', 19: '赞', 20: '赞', 21: '赞', 22: '赞', 23: '赞', 24: '赞', 25: '赞', 26: '赞', 27: '赞', 28: '赞', 29: '赞', 30: '赞', 31: '赞' dict_keys([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31]) dict_values(['赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞', '赞']) dict_items([(0, '赞'), (1, '赞'), (2, '赞'), (3, '赞'), (4, '赞'), (5, '赞'), (6, '赞'), (7, '赞'), (8, '赞'), (9, '赞'), (10, '赞'), (11, '赞'), (12, '赞'), (13, '赞'), (14, '赞'), (15, '赞'), (16, '赞'), (17, '赞'), (18, '赞'), (19, '赞'), (20, '赞'), (21, '赞'), (22, '赞'), (23, '赞'), (24, '赞'), (25, '赞'), (26, '赞'), (27, '赞'), (28, '赞'), (29, '赞'), (30, '赞'), (31, '赞')])

get()函数用于从字典中根据键取值,如果不存在,则可以设定默认值

#根据键取值
print(dict2[1])
print(dict2.get(1))
print(dict2.get(32,"不存在该值"))
运行结果:
    赞
	赞
	不存在该值

也可以通过in和not in来判断字典中是否存在这个键

if 32 in dict2:
    print("该键存在")
else:
    print("该键不存在")

**清除字典的所有数据使用clear()函数。**

copy()函数用于拷贝一个字典,属于值传递,不是引用传递。

a="one":1,"two":2,"three":3
b=a.copy()
a["two"]=10
print(a)
print(b)
运行结果:
    'one': 1, 'two': 10, 'three': 3
	'one': 1, 'two': 2, 'three': 3

pop()和popitem()函数的使用

a="one":1,"two":2,"three":3
#根据键输出这个值,并从字典中删除这个元素
print(a.pop("two"))
print(a)
#从字典中输出一个键值对,并从字典中删除这个元素,可作为随机取出
print(a.popitem())
print(a)

setdefault()函数和get()函数有点相似,但是setdefault()函数在字典中找不到相应的键时会自动添加至字典中:

a="one":1,"two":2,"three":3
print(a.setdefault("two"))
print(a.setdefault(10))
print(a)

update()函数用于更新字典中的数据

pets="米奇":"老鼠","汤姆":"猫","小白":"猪"
pets["米奇"]="大老鼠"
print(pets)#'米奇': '大老鼠', '汤姆': '猫', '小白': '猪'
pets.update(小白="狗")
print(pets)#'米奇': '大老鼠', '汤姆': '猫', '小白': '狗'

字典作为可变字符传入函数的形参时,需要使用**来进行表示

def test(** params):
    print("有%d个参数"%len(params))
    print("它们分别是:",params)
test(**pets)
test(a=1,b=2)
运行结果:
    有3个参数
	它们分别是: '米奇': '大老鼠', '汤姆': '猫', '小白': '狗'
	有2个参数
	它们分别是: 'a': 1, 'b': 2

6.2 集合

在python中集合类似与Java中的set集合,集合中用大括号表示,并不能存在重复的数据。

#集合的使用
num1=
print(type(num1))#以大括号空值表示的不是集合,而是字典
#<class 'dict'>
num2=1,2,3,4,5
print(type(num2))#在大括号中没有键值对,只有值,这是集合的格式
#<class 'set'>

集合中不能存在重复的数据

num3=1,2,3,4,5,1,2,3
print(num3)

运行结果为:1, 2, 3, 4, 5

集合和字典类似,数据是无序的,因此不能通过索引值来获取其中的元素。

集合的内建函数是set(),因此可以使用该函数将列表,元组转换成集合。

num3=1,2,3,4,5,1,2,3
num4=set([1,2,3,4,5,1,2,3])
print(num3)
print(num4)
print(num3==num4)

运行结果:

1, 2, 3, 4, 5 1, 2, 3, 4, 5 True

例如,没有学习set集合之前,要去除具有重复数据的列表中的数据,那案例如下:

num3=[1,2,3,4,5,1,2,3]
#通过分片获得副本列表
temp=num3[:]
#将原列表清空
num3.clear()
for x in temp:
    if x not in num3:
        num3.append(x)

print(num3)

但通过set集合的话就简单了

num3=[1,2,3,4,5,1,2,3]
#将列表转换成集合,则会自动去除重复的数据,然后转换会列表
num3=list(set(num3))
print(num3)

但需要注意的是列表的元素是有顺序的,set集合的元素是无需的,当将列表转换后成集合的时候,再转换回列表,可能原本的列表的元素顺序不一定是原本的位置。

通过循环迭代的方式访问集合:

num5=4,5,1,2,3
for i in num5:
    print(i,end=" ")

运行结果:1 2 3 4 5

可以使用innot in来判断某个元素是否存在于集合中。

使用add()方法可以为集合中添加元素,使用remove()方法可以删除集合中存在的元素。

如果不想让集合中的元素被删除,修改和添加,那么我们可以将集合设置为终态,一旦定义后,不允许被改变,这时候需要使用frozenset()函数将集合进行固定起来。

以上是关于Python第六课 字典和集合的主要内容,如果未能解决你的问题,请参考以下文章

Python学习,第六课 - 集合

Python第六课----IO和序列化

python 第六课笔记

python第六课

Python 基础 2022 最新第六课 Numpy

Python 基础 2022 最新第六课 Numpy