详解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 string类型 bytes类型 bytearray类型

    Python中的字符串类型string 在Python中,字符串类型为内置数据类型之一,用于表示文本类型的数据。Python的字符串类型是不可变的,这意味着你不能改变一个字符串的值。Python的字符串类型有很多内置方法,可用于字符串的各种操作,如切片,查找,替换等。 创建字符串 Python中创建字符串的方法有两种:用单引号(‘)或双引号(“)将字符围起来…

    python 2023年6月5日
    00
  • python数据结构之递归方法讲解

    Python数据结构之递归方法讲解 递归是一种常用的编程技巧,它可以将一个问题分解成更小的子问题,直到问题变得足够简单,可以直接解决。在Python中,递归可以用于解决许多问题,例如计算阶、斐波那契数列等。本文将详细介绍Python中递归的用法和示例。 递归的基本原理 递归是一种函数调用自身的技术。在递归函数中,函数会不断地调用自身,直到满足某条件才停止递归…

    python 2023年5月13日
    00
  • 在Python-NumPy中对多项式进行微分并设置导数

    在Python-NumPy中,可以通过numpy.poly1d类创建多项式对象,而多项式的导函数也可以通过该类的deriv()方法快速求出。下面是完整的攻略: 导入NumPy库: python import numpy as np 使用numpy.poly1d函数创建多项式对象,例如,创建一个三次多项式$f(x)=3x^3+2x^2-3x+1$: pytho…

    python-answer 2023年3月25日
    00
  • 如何在 Android 手机上设置 android-scripting + python?

    【问题标题】:how to setup android-scripting + python on Android phones?如何在 Android 手机上设置 android-scripting + python? 【发布时间】:2023-04-06 18:01:01 【问题描述】: 我已经下载了最新可用版本的 python 解释器here。现在,我如…

    Python开发 2023年4月7日
    00
  • 快速解决pandas.read_csv()乱码的问题

    下面是快速解决pandas.read_csv()乱码问题的完整攻略。 1. 查看文件编码格式 使用notepad++或者其他代码编辑器打开csv文件,查看Encoding栏里的编码格式。如果发现是UTF-8,则在pandas.read_csv()中需要加上encoding=’utf-8’来指定编码。 示例代码: import pandas as pd df …

    python 2023年5月13日
    00
  • Python随手笔记第一篇(2)之初识列表和元组

    Python随手笔记第一篇(2)之初识列表和元组 在Python中,列表和元组是两种常用的数据类型。本攻略将详细介绍列表和元组,包括它们的定义、创建访问、修改等操作。 列表 列表是Python中最常用的数据类型之一,是一种有序的可变序列,可以包任意类型的元素。以下是Python列表的定义和创建方式: # 定义空列表 my_list = [] # 定义一个包含…

    python 2023年5月13日
    00
  • Python爬取网站图片并保存的实现示例

    让我们来详细讲解一下 Python 爬取网站图片并保存的实现攻略。 一、思路 爬取网站图片并保存的思路大概分为以下几个步骤: 分析目标网站的 HTML 结构,找到图片的所在标签和属性; 获取网站内容; 解析网站内容,提取出图片的 URL; 下载图片到本地; 保存图片。 二、代码实现 1. 简单示例 下面是 Python 简单爬取图片的代码: import r…

    python 2023年6月3日
    00
  • Python格式化输出字符串的五种方法总结

    Python格式化输出字符串的五种方法总结 Python中的字符串格式化可以让我们在输出字符串时灵活控制其格式,具有非常重要的作用。本文总结了Python格式化输出字符串的五种方法。下面将为您详细讲解每种方法。 1. %占位符 在Python中,使用“%”进行字符串格式化是最基础和最常用的方法,也是Python2时代最常用的方法。 格式化字符串时,可以使用一…

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