OneCoder Avatar
OneCodercoderli.com · 937 篇博文
🐍 Python

Python 与大数据

MySQL、Hadoop、自动化与基础工具

🎨 视觉封面

Python练习-常用内建模块collections

📅 2022-09-14·✍️ onecode·计算中...·⏱️ 4 分钟
#Python

本部分学习Python常用内建模块collections。collections模块中提供了很多集合相关的类,如namedtuple、OrderDict、ChainMap以及Count等。便于针对特定使用场景,高效的进行集合操作。

一、namedtuple

namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来使用tuple的某个元素。主要的作用是增强了使用tuple时的可读性

PYTHON
# namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
Boys = namedtuple("Boy", ["name", "age"])
boy_one = Boys("One", 20)
print(boy_one)
print(boy_one.name)
print(isinstance(boy_one, tuple))

输出如下:

Boy(name='One', age=20)
One
True

二、deque

deque是一个双向列表,可以高效实现插入和删除操作

PYTHON
dq = deque(['a', 'b', 'c'])
dq.append("zz")
dq.appendleft("XX")
print(dq)
dq.popleft()
print(dq)

输出如下:

deque(['XX', 'a', 'b', 'c', 'zz'])
deque(['a', 'b', 'c', 'zz'])

三、defualdict

defualdict是一个当key不存在返回默认值的dict

PYTHON
dd = defaultdict(lambda: "Key does not exist")
dd["k1"] = "val1"
print(dd["k1"])
print(dd["k2"])

输出如下:

val1
Key does not exist

四、OrderedDict

OrderedDict是key按照插入顺序的dict

PYTHON
od = OrderedDict()
od["a"] = 1
od["c"] = 3
od["b"] = 2
print(od.keys())

输出如下:

odict_keys(['a', 'c', 'b'])

五、ChainMap

ChainMap可以把一组dict串起来并组成一个逻辑上的dict。ChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。适合于例如:多处设置同一变量值,存在变量值覆盖,但是有取值优先级的场景。

PYTHON
dict_one = {"A": "AOne"}
dict_two = {"A": "BOne", "B": "Two"}
dic_three = {"C": "CThree"}
cm = ChainMap(dict_one, dict_two, dic_three)
print(cm.get("A"))
print(cm.get("B"))
print(cm.get("C"))

输出如下:

AOne
Two
CThree

六、Counter

Counter计数器用于统计字符出现的次数

PYTHON
c = Counter("Javajavascriptpython")
print(c)

输出如下:

Counter({'a': 4, 'v': 2, 'p': 2, 't': 2, 'J': 1, 'j': 1, 's': 1, 'c': 1, 'r': 1, 'i': 1, 'y': 1, 'h': 1, 'o': 1, 'n': 1})

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!