Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧

简介: 社区曾有人开玩笑地说:「Python 企图用字典装载整个世界。」可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。

字典(dict)对象是 Python 最常用的数据结构之一。


社区曾有人开玩笑地说:「Python 企图用字典装载整个世界。」


可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。


一、字典创建


# 1、创建空字典
a = {}
b = dict()
# 2、有初始值,从输入的便利程度来说,我更喜欢第二种
a = {'a': 1, 'b': 2, 'c': 3}
b = dict(a=1, b=2, c=3)
# 3、key 来自一个列表,而 value 相同, 使用 fromkeys,那是相当的优雅
keys = ['a', 'b', 'c']
value = 100
d = dict.fromkeys(keys, value)
# 4、key 来自一个列表,而 value 也是一个列表,使用 zip
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values))
复制代码


二、字典合并


m = {'a': 1}
n = {'b': 2, 'c': 3}
# 合并,两种方式
# 1、使用 update
m.update(n)
# 2、使用 **
{**m, **n}
复制代码


三、判断 key 是否存在


在 Python2 中判断某个 key 是否存在,可以使用 has_key,但这个方法在 Python3 中已经被移除了。


另一种方法是使用 in 关键字,不仅兼容 Python2 和 Python3,速度还更快,强烈推荐。


d = {'a': 1, 'b': 2}
if 'a' in d:
    print('hello')    
复制代码


四、获取字典中的值


d = {'a': 1, 'b': 2}
# 1、直接用 key 取值,但这种方式不好,如果 key 不存在会报错,推荐使用 get
a = d['a']
# 2、使用 get,如果 key 不存在还可以赋默认值
a = d.get('a')
c = d.get('c', 3)
复制代码


五、字典遍历


d = {'a': 1, 'b': 2, 'c': 3}
# 遍历 key
for key in d.keys():
    pass
# 遍历 value
for key, value in d.values():
    pass
# 遍历 key 和 value
for key, value in d.items():
    pass
复制代码


六、字典按 key 或 value 排序


d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7}
# 按 key 排序
sorted(d.items(), key=lambda t: t[0])
# 按 key 倒序
sorted(d.items(), key=lambda t: t[0], reverse=True)
# 按 value 排序
sorted(d.items(), key=lambda t: t[1])
复制代码


还有一个需求是我在开发过程经常碰到的,就是有一个列表,列表的元素是字典,然后按字典的 value 对列表进行排序。


l = [{'name': 'a', 'count': 4}, {'name': 'b', 'count': 1}, {'name': 'd', 'count': 2}, {'name': 'c', 'count': 6}]
sorted(l, key=lambda e: e.__getitem__('count'))
# 倒序
sorted(l, key=lambda e: e.__getitem__('count'), reverse=True)
复制代码


七、字典推导式


列表推导式和字典推导式是我相当喜欢的功能,简洁高效。mapfilter 我都已经快不会用了。


l = [1, 2, 3]
{n: n * n for n in l}
{1: 1, 2: 4, 3: 9}
复制代码


以上。



目录
相关文章
|
5天前
|
Python
python魔法方法如何应用
这个Python示例展示了类继承和方法重写。`Student`类继承自`Person`,并覆盖了`say_hello`方法。通过`super().__init__(name)`调用父类的`__init__`初始化`name`属性,`Student`添加了`age`属性,并在重写的`say_hello`中使用。创建`Student`实例`student`并调用其`say_hello`,输出定制的问候信息。
16 1
|
16天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
1天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
12 0
|
6天前
|
机器学习/深度学习 人工智能 算法
|
7天前
|
安全 Python
python字典的内置方法
Python字典主要方法包括:`keys()`(返回所有键)、`values()`(返回所有值)、`items()`(返回所有键值对)、`get()`(安全取值,键不存在时返回默认值)、`setdefault()`(设置默认值)、`update()`(合并字典)、`pop()`(删除并返回值)、`clear()`(清空字典)、`copy()`(浅拷贝)、`fromkeys()`(新建字典并设置默认值)、`popitem()`(随机删除键值对)。
7 0
|
15天前
|
存储 Java 程序员
【Python】6. 基础语法(4) -- 列表+元组+字典篇
【Python】6. 基础语法(4) -- 列表+元组+字典篇
39 1
|
15天前
|
存储 Python
python基础篇: 详解 Python 字典类型内置方法
python基础篇: 详解 Python 字典类型内置方法
25 1
|
18天前
|
Java 测试技术 Python
Python开启线程和线程池的方法
Python开启线程和线程池的方法
13 0
Python开启线程和线程池的方法
|
20天前
|
算法 Python
数据结构与算法 经典排序方法(Python)
数据结构与算法 经典排序方法(Python)
23 0
|
21天前
|
C语言 Python
Python字典推导式:高效构建字典的利器
在Python编程中,字典推导式(Dictionary Comprehension)是一种强大的构造工具,它允许我们以简洁的方式从现有可迭代对象创建新的字典。通过字典推导式,我们可以轻松地对数据进行转换、过滤或重新组织,以符合特定的需求。本文将深入探讨字典推导式的概念、语法和应用场景,帮助读者更好地掌握这一高效的编程工具。

热门文章

最新文章