Python里的set和dict,如何选择用哪一个?
set和dict的共同特点就是无序。
set存储的元素是唯一的,如果重复就会自动去除。
>>> aset={1,2,3,3}
>>> print(aset)
{1, 2, 3}
dict的key必须是唯一的,但value是可以重复的。因此常常用来统计个数,比如文章里出现的单词数量。
>>> adict = {"love":4, "python":4, "appli":1}
set 适合用来计算两个集合的交集与并集。
>>> run_lovers = {"tom","jerry","appli"}
>>> swim_lovers = {"jim","scot","appli"}
>>> lovers = run_lovers | swim_lovers
>>> print(lovers) # 喜欢跑步或游泳的人
{'jim', 'appli', 'scot', 'tom', 'jerry'}
>>> both_lovers = run_lovers & swim_lovers
>>> print(both_lovers) #既喜欢跑步又喜欢游泳的人
{'appli'}
因为str,list和tuple都是有序的,索引只能用整数作为索引。
dict不仅可以用数字,也可以用字符串做索引。实际上immutable(比如基本类型)都可以作为索引。
>>> adict = {3:3, 3.0:3, "abc":3, b"abc":3, True:3}
>>> adict[3],adict[3.0],adict["abc"]
(3, 3, 3)
>>> adict[b"abc"],adict[True]
(3, 3)
因此,dict 适用于从索引(key)到值(value)的映射的情况,和json是好兄弟。