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

yizhihongxing

下面是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+Pygame实现简单的射击小游戏

    标题:Python+Pygame实现简单的射击小游戏攻略 介绍:本攻略将详细介绍如何使用Python语言以及Pygame库实现简单的射击小游戏。主要分为以下几个步骤: 环境准备 游戏框架搭建 游戏角色设计 游戏逻辑实现 游戏运行与测试 一、环境准备 为了开发这个小游戏,需要先安装Python和Pygame库。安装Python的方法因操作系统而异,可以在官方网…

    python 2023年6月3日
    00
  • Python日期与时间模块(datetime+time+Calendar+dateuil )相关使用讲解

    Python日期与时间模块(datetime+time+Calendar+dateuil )是Python内置模块,用于处理日期和时间相关的问题。本篇攻略将详细讲解该模块的使用方法及示例。 datetime模块 datetime模块是Python内置模块,用于处理日期和时间相关的问题,包含datetime类、time类、timedelta类等。其中,date…

    python 2023年6月2日
    00
  • python中对信号的处理详解

    Python中对信号的处理详解 在Python中,我们可以使用signal模块来处理信号。信号是一种软件中断,用于通知进程发生了某些事件。在本文中,我们将详细讲解Python中对信号的处理,包括信号的基本概念、信号的种类、信号的处理方式以及如何在Python中使用signal模块处理信号。 信号的基本概念 信号是一种软件中断,用于通知进程发生了某些事件。当进…

    python 2023年5月13日
    00
  • python比较2个xml内容的方法

    前言 在比较两个XML文件中的内容时,我们需要使用Python的XML解析库和一些比较工具来完成。这篇文章将详细介绍如何使用Python比较两个XML文件中的内容,并提供两个示例来帮助您更好地理解。 使用Python的XML解析库解析XML文件 要比较两个XML文件中的内容,我们首先需要使用Python的XML解析库解析XML文件并构建XML文档树。在Pyt…

    python 2023年6月3日
    00
  • 详解Python中打乱列表顺序random.shuffle()的使用方法

    详解Python中打乱列表顺序random.shuffle()的使用方法 介绍 random.shuffle()是Python内置模块random中的一个函数,可以将列表元素随机打乱。 语法 import random random.shuffle(list) 参数 参数list是待打乱顺序的列表。 返回值 该函数没有返回值,直接在原列表上进行修改。 示例一…

    python 2023年6月3日
    00
  • Python+drawpad实现CPU监控小程序

    下面是详细的Python+drawpad实现CPU监控小程序的攻略: 一、准备工作 1.安装Python环境 首先要安装Python环境,建议选择Python 3.x版本来进行开发。可以从Python官网下载安装包并进行安装。 2.安装drawpad模块 使用drawpad模块需要先安装该模块。可以使用pip命令进行安装,打开终端(或cmd)窗口,输入以下命…

    python 2023年5月18日
    00
  • Python接口测试get请求过程详解

    以下是关于“Python 接口测试 GET 请求过程详解”的完整攻略: Python 接口测试 GET 请求过程详解 在 Python 中,我们可以使用 requests 模块进行接口测试。其中,GET 请求是最常用的一种请求方式。以下是 Python 接口测试 GET 请求过程的详解。 发送 GET 请求 我们可以使用 requests 模块的 get()…

    python 2023年5月15日
    00
  • SyntaxError:尝试在 .tgz 文件上使用 tarfile.open() 时,python 中的语法无效 [重复]

    【问题标题】:SyntaxError: Invalid Syntax in python when trying to use tarfile.open() on a .tgz file [duplicate]SyntaxError:尝试在 .tgz 文件上使用 tarfile.open() 时,python 中的语法无效 [重复] 【发布时间】:2023-…

    Python开发 2023年4月6日
    00
合作推广
合作推广
分享本页
返回顶部