助你更好的理解 Python 字典

简介: 助你更好的理解 Python 字典

字典是Python中的常用数据类型之一,可将数据存储在键/值对中,同 Java 中的 Map 相似。

image.png

Python字典理解


1、什么是字典理解?


字典理解是创建字典的一种优雅简洁的方法。


字典理解优化


使用字典理解优化函数。


示例:

# 字典理解例:
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)

输出:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
sandbox> exited with status 0

创建了 square_dict 带有数字平方键/值对的字典。但是,使用字典理解可以使在一行中创建字典。


2、使用字典理解


字典理解的最小语法为:

dictionary = {key: value for vars in iterable}

解析语法图


让将此语法与上例中的字典理解进行比较。

image.png

字典理解图解


如何使用字典理解


示例:

old_price = {'milk': 1.04, 'coffee': 2.8, 'bread': 2.8}
dollar_to_pound = 0.86
new_price = {item: value*dollar_to_pound for (item, value) in old_price.items()}
print(new_price)

输出:

{'coffee': 2.408, 'milk': 0.8944, 'bread': 2.408}
sandbox> exited with status 0

可以看到以美元为单位检索商品价格并将其转换为英镑。使用字典理解使此任务更加简单和短。


3、字典理解中的条件


可以通过添加条件来进一步自定义字典理解。让来看一个实例。


如果条件字典理解


示例:

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
even_dict = {k: v for (k, v) in original_dict.items() if v % 2 == 0}
print(even_dict)

输出:

{'michael': 48, 'jack': 38}
sandbox> exited with status 0

可以看到,由于if字典理解中的子句,仅添加了具有偶数值的项目。


多重if条件字典理解


示例:

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict = {k: v for (k, v) in original_dict.items() if v % 2 != 0 if v < 40}
print(new_dict)

输出:

{'john': 33}
sandbox> exited with status 0

在这种情况下,仅奇数值小于40的项目已添加到新字典中。


这是因为if字典理解中有多个子句。等效于and必须同时满足两个条件的操作。


if-else条件字典理解


示例:

original_dict = {'jack': 38, 'michael': 48, 'guido': 57, 'john': 33}
new_dict_1 = {k: ('old' if v > 40 else 'young')
    for (k, v) in original_dict.items()}
print(new_dict_1)

输出:

{'john': 'young', 'michael': 'old', 'jack': 'young', 'guido': 'old'}
sandbox> exited with status 0

在这种情况下,将通过子典理解来创建新字典。


价值大于等于40的商品的值为“old”,而其他商品的值为“young”。


4、嵌套字典理解


可以将字典理解本身添加到字典理解中以创建嵌套字典。


具有两个字典理解的嵌套字典


示例:

dictionary = {
    k1: {k2: k1 * k2 for k2 in range(1, 6)} for k1 in range(2, 5)
}
print(dictionary)

输出:

{2: {1: 2, 2: 4, 3: 6, 4: 8, 5: 10}, 3: {1: 3, 2: 6, 3: 9, 4: 12, 5: 15}, 4: {1: 4, 2: 8, 3: 12, 4: 16, 5: 20}}
sandbox> exited with status 0

在嵌套字典中构造了一个乘法表,用于2到4的数字。每当使用嵌套字典理解时,Python都会首先从外部循环开始,然后再进入内部循环。


5、使用字典理解的优势


以上文章介绍所示,字典理解大大缩短了字典初始化的过程。


它使代码更具 pythonic 风格,在的代码中使用字典理解可以缩短代码行,同时保持逻辑完整。


6、总结


以上内容基于 Python 基础,介绍了如何使用字典。


通过分类对每一模块,进行详细的讲解。使用图解析语法,实例代码演示,运行效果图的展示,希望能够帮助大家更好的理解 Python 字典。

相关文章
|
25天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
1月前
|
存储 索引 Python
python字典:怎么取出key对应的值
python字典:怎么取出key对应的值
37 0
|
1月前
|
存储 数据库 索引
Python新手常见问题一:列表、元组、集合、字典区别是什么?
本文针对Python编程新手常遇到的问题,详细阐述了列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)这四种数据结构的核心区别。列表是一种有序且可变的数据序列,允许元素重复;元组同样有序但不可变,其内容一旦创建就不能修改;集合是无序、不重复的元素集,强调唯一性,主要用于数学意义上的集合操作;而字典则是键值对的映射容器,其中键必须唯一,而值可以任意,它提供了一种通过键查找对应值的有效方式。通过对这些基本概念和特性的对比讲解,旨在帮助初学者更好地理解并运用这些数据类型来解决实际编程问题。
37 1
|
2天前
|
JSON 数据可视化 定位技术
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
python_将包含汉字的字典数据写入json(将datav的全省数据中的贵州区域数据取出来)
6 0
|
3天前
|
JSON 数据格式 索引
python 又一个点运算符操作的字典库:Munch
python 又一个点运算符操作的字典库:Munch
21 0
|
16天前
|
安全 Python
python字典的内置方法
Python字典主要方法包括:`keys()`(返回所有键)、`values()`(返回所有值)、`items()`(返回所有键值对)、`get()`(安全取值,键不存在时返回默认值)、`setdefault()`(设置默认值)、`update()`(合并字典)、`pop()`(删除并返回值)、`clear()`(清空字典)、`copy()`(浅拷贝)、`fromkeys()`(新建字典并设置默认值)、`popitem()`(随机删除键值对)。
8 0
|
24天前
|
存储 Java 程序员
【Python】6. 基础语法(4) -- 列表+元组+字典篇
【Python】6. 基础语法(4) -- 列表+元组+字典篇
41 1
|
24天前
|
存储 Python
python基础篇: 详解 Python 字典类型内置方法
python基础篇: 详解 Python 字典类型内置方法
28 1
|
30天前
|
C语言 Python
Python字典推导式:高效构建字典的利器
在Python编程中,字典推导式(Dictionary Comprehension)是一种强大的构造工具,它允许我们以简洁的方式从现有可迭代对象创建新的字典。通过字典推导式,我们可以轻松地对数据进行转换、过滤或重新组织,以符合特定的需求。本文将深入探讨字典推导式的概念、语法和应用场景,帮助读者更好地掌握这一高效的编程工具。
|
1月前
|
Python
深入解析Python中的字典推导式
深入解析Python中的字典推导式