详解Python 字典、映射和散列表

下面是Python 字典、映射和散列表的完整攻略。

Python字典

Python中的字典是一种无序的键值对数据结构,也称为哈希表或关联数组。它们非常适合存储和快速访问大量的相关数据。

创建字典

下面是创建Python字典的几种方法:

# 空字典
d = {}

# 直接通过键值对创建字典
d = {'apple': 2, 'banana': 3, 'pear': 4}

# 通过dict()函数创建字典
d = dict(apple=2, banana=3, pear=4)

# 通过列表和zip()函数创建字典
keys = ['apple', 'banana', 'pear']
values = [2, 3, 4]
d = dict(zip(keys, values))

print(d)    # {'apple': 2, 'banana': 3, 'pear': 4}

访问字典元素

可以使用方括号([])来访问字典中的值,需要在括号中指定键名:

d = {'apple': 2, 'banana': 3, 'pear': 4}

print(d['apple'])   # 2

也可以使用get()方法来访问字典中的值。如果指定的键名不存在,则返回None或用户指定的默认值:

d = {'apple': 2, 'banana': 3, 'pear': 4}

print(d.get('apple', 0))    # 2
print(d.get('orange', 0))   # 0

更新字典

可以使用方括号或update方法来更新字典中的值:

d = {'apple': 2, 'banana': 3, 'pear': 4}

# 使用方括号更新值
d['apple'] = 5

# 使用update()方法更新值
d.update({'banana': 6})

print(d)    # {'apple': 5, 'banana': 6, 'pear': 4}

删除字典元素

可以使用del关键字来删除字典中的元素:

d = {'apple': 2, 'banana': 3, 'pear': 4}

del d['apple']

print(d)    # {'banana': 3, 'pear': 4}

Python映射

Python中的映射是一种通用的键值对数据结构,字典是其中的一种实现。除了字典,Python还支持OrderedDict、Counter和defaultdict等映射类型的实现。

Python散列表

Python中的散列表实际上就是字典类型,它使用哈希函数将键映射到散列表中的一个位置,并将其与值关联。由于哈希函数的优秀性和底层实现机制的巧妙性,散列表可以在常数时间内完成许多基本操作,例如插入、查询和删除等。

示例

下面是一个使用Python字典实现缓存的示例:

class Cache:
    def __init__(self, capacity):
        self.capacity = capacity
        self.cache = {}

    def get(self, key):
        if key not in self.cache:
            return -1

        value = self.cache.pop(key)
        self.cache[key] = value

        return value

    def put(self, key, value):
        if key in self.cache:
            self.cache.pop(key)

        elif len(self.cache) >= self.capacity:
            self.cache.pop(next(iter(self.cache)))

        self.cache[key] = value

这个类表示一个容量为N的缓存,可以进行get和put操作。当缓存满时,会删除掉最近最少使用的元素。这里使用Python字典实现,可以在常数时间内完成get和put操作。

另一个示例是使用Python字典和列表实现一个图的存储和遍历:

class Graph:
    def __init__(self):
        self.graph = {}

    def add_edge(self, u, v):
        if u not in self.graph:
            self.graph[u] = []

        if v not in self.graph:
            self.graph[v] = []

        self.graph[u].append(v)
        self.graph[v].append(u)

    def dfs(self, v, visited):
        visited.add(v)

        print(v)

        for neighbor in self.graph[v]:
            if neighbor not in visited:
                self.dfs(neighbor, visited)

    def bfs(self, v):
        visited = set()
        queue = [v]

        while queue:
            v = queue.pop(0)

            if v not in visited:
                visited.add(v)
                print(v)

                for neighbor in self.graph[v]:
                    queue.append(neighbor)

这个类表示一个无向图,使用Python字典和列表实现其邻接表存储,可以进行深度优先和广度优先遍历。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python 字典、映射和散列表 - Python技术站

(0)
上一篇 2023年3月25日
下一篇 2023年3月25日

相关文章

  • python中的mmap稀疏向量

    【问题标题】:mmap sparse vector in pythonpython中的mmap稀疏向量 【发布时间】:2023-04-07 13:52:01 【问题描述】: 我正在寻找可以映射到内存中的简单稀疏向量实现,类似于numpy.memmap。 不幸的是,numpy 实现只处理全向量。示例用法: vec = SparseVector(‘/tmp/fi…

    Python开发 2023年4月8日
    00
  • Python安装第三方库的方法(pip/conda、easy_install、setup.py)

    当我们需要使用Python的一些第三方库时,如果直接从源代码下载并安装比较繁琐,因此我们可以使用一些Python包管理工具进行快速便捷的安装,这就是今天我们需要了解的Python安装第三方库的方法。Python包管理工具主要包括pip、conda、easy_install和setup.py等。 pip安装第三方库 pip,全称pip installs pac…

    python 2023年5月14日
    00
  • Python网络爬虫与信息提取(实例讲解)

    “Python网络爬虫与信息提取(实例讲解)”是一本比较全面的关于Python爬虫的书籍,讲解了Python爬虫的基础知识、常用工具和实例应用等内容。以下是该书籍攻略的完整讲解。 1. 前言 在前言部分,该书籍介绍了网络爬虫的定义和应用,以及Python语言在网络爬虫中的优势。同时还简单介绍了一些Python网络爬取工具和相关库的使用方法,如requests…

    python 2023年5月14日
    00
  • 在Python中使用base64模块处理字符编码的教程

    当我们需要在代码中处理二进制数据时,常常需要对其进行编码和解码,使其能够以文本形式传输或存储。base64是一种常见的编解码方式,它能够将任意的二进制数据转化为ASCII码的文本形式,便于传输和存储。在Python中,我们可以使用内置的base64模块来进行编解码处理。本文将提供一份完整的攻略,详细讲解如何使用base64模块进行字符编码的处理。 1. 基本…

    python 2023年5月20日
    00
  • Python实现求一个集合所有子集的示例

    Python实现求一个集合所有子集的示例 求一个集合所有子集是一个经典的问题,Python中有多种方法可以实现。本文将介绍两种常见的方法,包括使用递归和使用迭代。 方法一:使用递归 使用递归是求一个集合所有子集的一种常见方法。以下是示例代码: def get_subsets(s): if not s: return [[]] x = get_subsets(…

    python 2023年5月13日
    00
  • Python自动生成代码 使用tkinter图形化操作并生成代码框架

    以下是Python自动生成代码使用tkinter图形化操作并生成代码框架的完整攻略。 总览 Python自动生成代码可以非常方便地实现快速生成大量代码的工作。使用tkinter图形化操作,可以使代码生成更加友好和高效。下面介绍具体的步骤。 第一步:安装相关工具包 使用Python自动生成代码需要安装pip,以及prompt_toolkit和pygments两…

    python 2023年5月19日
    00
  • python操作日期和时间的方法

    下面是关于Python操作日期和时间的方法的完整攻略,包含以下内容: Python中操作日期和时间的模块 常用的日期和时间格式 日期和时间的转化 日期和时间的加减运算 示例1:计算两个日期之间的差值 示例2:将字符串转换为日期 Python中操作日期和时间的模块 Python中常用的日期和时间模块是datetime。datetime模块提供了如下类: dat…

    python 2023年6月2日
    00
  • python求绝对值的三种方法小结

    下面是针对“python求绝对值的三种方法小结”的详细讲解攻略: 1.方法一:使用内置函数abs() Python内置函数abs()用于求取数字的绝对值,参数为数字。下面是使用这种方法的示例代码: num1 = -5 num2 = 12 print(abs(num1)) # 执行后输出:5 print(abs(num2)) # 执行后输出:12 2.方法二:…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部