今天笔者将向大家分享9个令人相见恨晚的Python字典技巧,让你更优雅高效地处理字典,写出更加Pythonic的代码。
1. 使用 dict(key=value) 创建字典
通常,我们通过以下方式创建字典:
但是我常用的是 dict(key=value) 的方式:
这样做的好处是:当使用 {} 创建字典时,对于字符串键,我们需要输入引号符。如果处理的键很多,那么就需要输入更多的引号符,这不仅效率低下,而且还很无聊。而使用 dict(key=value) 方式,则不需要输入引号符,省去了我们很多无聊的工作,并且代码更简洁。
当然,dict(key=value) 方式不适用于非字符串键,因此这两种方式都有各自的用途,根据需求选择最合适的方式即可。
2. 使用 ** 合并字典
字典前面的 ** 符号用于将键值对解包到目标字典中。
3. 使用 ** 将字典作为参数传递
当然,我们也可以动态地将包含键 name, age 和 city 的字典传递给函数:
字典前面的 ** 可以将字典的键值解包到函数 personal_info 中。如果我们想要动态地将关键字参数传递到函数中,这种方式很有用。
4. 字典推导式
假设我们想要创建字典:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
有两种方式:
- ① 常规方式——循环实现:
- ② 字典推导式实现:
虽然两种方式都是正确且合法的方式,但请注意,字典推导式更加优雅、Pythonic 且可读性更强。
5. get(key, default_value) 获取字典值
通常情况下,当我们访问一个不存在的键时,会得到 KeyError:
如果我们不希望出现 KeyError,那么可以使用 get() 方法,如果键不存在,该方法会返回 None:
这个时候,我们就不会得到 KeyError,而是 None。此外,我们还可以设置默认值(如果键不存在):
6. 根据元组列表创建字典
在实际项目中,如果需要通过上下文的元组列表创建字典,这种方式就非常有用。
7. values() 和 items() 方法
一般情况下,当我们遍历字典本身时,我们得到的是字典的所有键:
这等价于 .keys() 方法:
如果我们使用 .values() 方法,我们将生成字典的所有值:
然而,如果我们想要同时获取字典的键值对,则可以使用 .items() 方法:
8. setdefault() 方法
前面我们提到使用 get() 方法访问不存在的字典键时,不会得到 KeyError。其实,还有另外一种方法 setdefault() 可以达到相同的目的。与前者的区别在于,setdefault() 方法还可以动态修改字典,即当字典键不存在时,会向字典中增加新的键值对。
使用 setdefault() 方法,我们可以轻易实现字符计数:
9. 可以作为字典键以及不能作为键的数据类型
通常:
- 不可变数据类型可以作为字典键,比如:int, str, tuple, bool。
- 可变数据类型则不可以作为字典键,比如:list, dict。
结论
今天的分享就到这啦!感谢你的阅读,希望本文对你能有所帮助!