Python进阶-02-集合&字典

来源:《Python从小白到大牛》关东升

1、集合

集合(set)是一种可迭代、无序的、不能包含重复元素的数据结构。

   提示:与序列比较,序列中的元素是有序的,可以重复出现的,而集合中的元素是无序的,且不能有重复的元素。序列强调的是有序,集合强调的是不重复。当不考虑顺序,而且没有重复的元素时,序列和集合可以互相替换。

集合又分为可变集合(set)和不可变集合(frozenset)。

1.1创建可变集合

可变集合类型是set,创建可变集合可以使用set([iterable])函数,或者用大括号{}将元素括起来,元素之间用逗号分隔。
提示:要获得集合中元素的个数,可以使用len()函数,注意len()是函数不是方法。

1.2修改可变集合

可变集合类似于列表,可变集合的内容可以被修改,可以向其中插入和删除元素。修改可变集合有几个常用的方法。

add(elem):添加元素,如果元素不存在,则抛出错误;
remove(elem):删除元素,如果元素不存在,则抛出错误;
discard(elem):删除元素,如果元素不存在,不会抛出错误;
pop():删除返回集合中任意一个元素,返回值是删除的元素;
clear():清除集合。

1.3遍历集合

集合是无序的,没有索引,不能通过下标访问单个元素。但可以遍历集合,访问集合每一个元素。

1.4不可变集合

不可变集合类型是frozenset,创建不可变集合应使用frozenset([iterable])函数,不能使用大括号{}。

1.5集合推导式

类似于列表推导式

2、字典

字典(dict)是可迭代的、可变的数据结构,通过键来访问元素。字典结构比较复杂,它是由两部分视图构成的,
一个是键(key)视图,另一个是值(value)视图。键视图不能包含重复元素,而值集合可以,键和值是成对出现的。

提示:字典更适合通过键快速访问值,就像查英文字典一样,键就是要查的英文单词,而值是英文单词的翻译和解释等内容。有的时候,一个英文单词会对应多个翻译和解释,这也是与字典集合特性相对应的。

2.1创建字典

字典类型是 dict,创建字典可以使用dict()函数,或者用大括号{}将“键:值”对括起来,“键:值”对之间用冒号分隔。
使用“键:值”对创建字典,这是最简单创建字典的方式。创建一个空字典表达式是{}。获得字典长度(键值对个数)也是使用len()函数。
zip() 函数将两个可迭代对象打包成元组,再创建字典时,可迭代对象元组需要两个可迭代对象,第一个是键,第二个是值,他们包含的个数相同并且一一对应。

注意:使用dict()函数创建字典时还可以使用一种key=value形式参数。key=value形式只能创建键是字符串类型的字典,使用时需要省略包裹字符串的引导(包括双引号或单引号)。

2.2修改字典

字典可以被修改,但都是针对键和值同时操作,修改字典操作包括添加、替换和删除“键:值”对。访问字典中元素可通过下标实现,下标参数是键,返回对应的值:

dict[key],返回的则为该键对应的值。

字典下标访问的元素也可以在赋值符号“=”左边,如果键不存在则添加键值对,如果键存在则替换值使用 del 语句删除键值对:

del dict[key]

如果使用一种方法删除元素,可以使用字典的pop(key[,default])和popitem()方法。

pop(key[,default])方法删除键值对时,如果键存在则返回默认值(default)
popitem()方法可以删除任意键值对,返回删除的键值对构成元组。

2.3访问字典

字典还需要一些方法用来访问它的键或值。

get(key[,default]):通过键返回值,如果键不存在返回默认值。
items():返回字典的所有键值对。
keys():返回字典键视图。
values():返回字典值视图。

在访问字典时,也可以使用 in 和 not in 运算符,但需要注意的是,in 和 not in 运算符只在测试键视图中进行。

2.4遍历字典

字典遍历也是字典的重要操作。与集合不同,字典有两个视图,因此遍历过程可以只遍历值视图,也可以只遍历键视图,也可以同时遍历。这些便利都是通过for循环实现的。

2.5字典推导式

因为字典包含了键和值两个不同的结构,因此字典推导式结果可以非常灵活。

input_dict={'one':1,'two':2,'three':3,'four':4}

output_dict={k:v for k,v in input_dict.items() if v % 2 ==0}
print(output_dict)

keys=[k for k,v in input_dict.items() if v % 2 ==0]
print(keys)

输入结构不能直接使用字典,因为字典不是序列,可以通过字典的item()方法返回字典中键值对序列。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值