Day 11:Python基本介绍04 | Set、Dictionary

おはよう~昨天我们介绍完了四种Collections的其中两种 - List、Tuple,而今天要接续介绍另外两种 - Set、Dictionary

Set(集合)

Set是无序、没有索引值且没有重复的成员的容器,可以想成纪录糖果口味的清单,因为口味不能重复,所以只有唯一一个。

candyFlavor = {"apple", "strawberry", "mango", "mango"}
print(candyFlavor)

Set是用 大括号 所包围,并用 逗号 区隔每笔资料。
也可以使用set()将产生空的Set,或将其他容器转为Set。

执行结果:

{'mango', 'apple', 'strawberry'}

这边可以注意到"mango"只有唯一一个,而且顺序每次都是随机的。

增加新口味

使用add(data)在集合中新增资料。

candyFlavor.add("orange")
print(candyFlavor)

显示结果:

{'mango', 'apple', 'strawberry', 'orange'}

移除口味

使用remove(data)移除集合中的资料。

candyFlavor.remove("orange")
print(candyFlavor)

显示结果:

{'mango', 'apple', 'strawberry'}

合并集合

将两个集合合并,重复的元素只会出现唯一一个,就像是你国中学的两个集合取联集这样。

newFlavor = {"apple", "banana"}
candyFlavor.update(newFlavor)
print(candyFlavor)

执行结果:

{'apple', 'banana', 'mango', 'strawberry'}

可以看的出来 "apple" 只有一个。

使用时机

Set因为有不可重复的特性(使用hashtable实现),所以相当适合用於不希望有重复值的场合,像是:水果种类,人名...,可省去检查是否有重复值的成本。

Dictionary(字典)

Dictionary也是无序、没有索引值且没有重复的成员的容器,和Set差别在於资料以一对对的Pair所组成,Pair的语法是key: value,一个key对应一个value,key不一定要是字串,但必须是唯一的。
也可以使用dict()将产生空的Dictionary。

candyNumber = {"apple": 5, "strawberry": 10, "mango": 3}

简单点可以想像成纪录糖果口味以及数量的清单,key是糖果口味,value是该口味的数量。

藉由口味存取数量

语法是dict[key],利用key来存取数量。dict[key] = value就可以改变数量。

print(candyNumber["apple"])
candyNumber["apple"] = 6
print(candyNumber)

执行结果:

5
{'apple': 6, 'strawberry': 10, 'mango': 3}

增加新口味和数量

也很简单,只要给新的key就会产生新的资料。

candyNumber["banana"] = 8
print(candyNumber)

执行结果:

{'apple': 6, 'strawberry': 10, 'mango': 3, 'banana': 8}

移除口味

使用pop(key)移除该key值的资料。

candyNumber.pop("banana")
print(candyNumber)

执行结果:

{'apple': 6, 'strawberry': 10, 'mango': 3}

取得所有口味

使用keys()取得所有key值,回传是所有key的List。

取得所有数字

使用values()取得所有value值,回传是所有value的List。

取得所有资料

使用item()取得所有资料组,回传是由(key, value)所组成的List。

print(candyNumber.keys())
print(candyNumber.values())
print(candyNumber.items())

执行结果:

dict_keys(['apple', 'strawberry', 'mango'])
dict_values([6, 10, 3])
dict_items([('apple', 6), ('strawberry', 10), ('mango', 3)])

使用时机

Dictionary跟其他三种容器比较不同,他是复合型的资料型态,也就是由一组key对应到一个value,因此用途非常的广泛,常用於纪录两笔数值间的关系,另外,之後爬虫会提到的json格式也用到类似的格式,就先记起来吧!

Collections总整理

Python提供四种Collections,分别是List、Tuple、Set、Dictionary,每个Collection都有各自的特色和使用时机,下面这些不用背起来,经常使用自然就会习惯了。

  • 列表(List):有序且可更改的容器,允许重复的成员。
  • 组合(Tuple):有序且不可更改的容器,允许重复的成员。
  • 集合(Set):无序且未索引的容器,没有重复的成员。
  • 字典(Dict):无序且未索引的容器,没有重复的成员,资料格式为key: value

小结

今天介绍了最後两种容器 - Set和Dictionary各自的特色和使用时机,希望看完这两天的文章後能帮助你更灵活的使用容器储存资料><。

因为如果将容器塞在同一天内容会太多,拆开来内容又太少,犹豫过後还是决定拆开来讲,所以今天的篇幅比较少一点,请各位见谅OAO。

明天就要来讲流程控制和回圈了,我们明天见!


如果喜欢这系列文章麻烦帮我按Like加订阅,你的支持是我创作最大的动力~

本系列文章以及范例程序码都同步更新在GitHub上,後续会持续的更新,如果喜欢也麻烦帮我按个星星吧~

有任何问题或建议,都欢迎在底下留言区提出,还请大家多多指教。


<<:  [Android Studio 30天自我挑战] RelativeLayout元件对齐方式

>>:  初学者跪着学JavaScript-Day1

Day 29--savedInstanceState状态保存,读取Google Sheet

由下图可知 onSaveInstanceState()是当生命周期进入onStop()时会被呼叫的c...

单位的责任分级

压等行不行 本篇适用人员: 资安人员。适用法规: 资通安全责任等级分级办法。 资安法中份量最大、也是...

【3】训练前先暖身 - 学习率 Warm-up 策略

Colab连结 Warm-up 训练是由这篇 Paper 提出的一种方法,主要的想法是提供模型在正式...

Day_16 UCI System

先前的设定都是在web介面下操作与实践,但实务上 UCI(Unified Configuration...

第一次谈谈清单

在使用Android 手机时,满多机会因为画面的大小限制,在呈现较多资料的时候,需要一个介面可以渐次...