首页 > 编程语言 >python中的dict()

python中的dict()

时间:2024-12-31 10:58:03浏览次数:1  
标签:python mapping value char dict print 键值 字典

在 Python 中,dict() 是创建字典的内置函数,字典是一种键值对(key-value pair)的数据结构。由于字典具有高效的键值查找、插入和删除操作,在 LeetCode 刷题中非常常用,尤其是处理映射关系、快速查找、计数、前缀匹配等问题时。


基本特性

  1. 键值对存储:字典中的每个元素是一个键值对,形式为 key: value
  2. 键的唯一性:字典的键必须唯一,重复键会覆盖之前的值。
  3. 可变性:字典支持动态添加、修改和删除键值对。
  4. 键必须可哈希:键可以是字符串、数字或元组等不可变类型,不能是列表或字典。

常见用法和语法

1. 创建字典

  • 空字典
    d = {}
    print(d)  # 输出: {}
    
  • 通过 dict() 创建
    d = dict(a=1, b=2)
    print(d)  # 输出: {'a': 1, 'b': 2}
    
  • 通过键值对创建
    d = {'key1': 'value1', 'key2': 'value2'}
    print(d)  # 输出: {'key1': 'value1', 'key2': 'value2'}
    

2. 访问和修改字典

  • 访问值

    d = {'a': 1, 'b': 2}
    print(d['a'])  # 输出: 1
    

    如果键不存在,直接访问会报错。

  • 使用 get() 方法

    print(d.get('c', 'default'))  # 输出: 'default'
    

    如果键不存在,返回默认值 default

  • 添加或修改键值对

    d['c'] = 3
    print(d)  # 输出: {'a': 1, 'b': 2, 'c': 3}
    

3. 删除元素

  • 使用 del
    del d['a']
    print(d)  # 输出: {'b': 2, 'c': 3}
    
  • 使用 pop()
    value = d.pop('b', 'default')
    print(value)  # 输出: 2
    print(d)  # 输出: {'c': 3}
    

4. 遍历字典

  • 遍历键
    for key in d:
        print(key)
    
  • 遍历值
    for value in d.values():
        print(value)
    
  • 遍历键值对
    for key, value in d.items():
        print(key, value)
    

5. 字典推导式

  • 快速创建字典
    squares = {x: x**2 for x in range(5)}
    print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
    

LeetCode 中常用场景

1. 统计频率

统计字符或数字的出现次数:

nums = [1, 2, 2, 3, 3, 3]
count = {}
for num in nums:
    count[num] = count.get(num, 0) + 1
print(count)  # 输出: {1: 1, 2: 2, 3: 3}

2. 检查映射关系

判断两个字符串是否存在一一映射:

def isIsomorphic(s, t):
    mapping_s_t = {}
    mapping_t_s = {}
    for c1, c2 in zip(s, t):
        if c1 in mapping_s_t and mapping_s_t[c1] != c2:
            return False
        if c2 in mapping_t_s and mapping_t_s[c2] != c1:
            return False
        mapping_s_t[c1] = c2
        mapping_t_s[c2] = c1
    return True

3. 前缀匹配

用于实现 Trie(字典树)相关题目:

class Trie:
    def __init__(self):
        self.children = {}
        self.is_end = False

    def insert(self, word):
        node = self
        for char in word:
            if char not in node.children:
                node.children[char] = Trie()
            node = node.children[char]
        node.is_end = True

4. 两数之和

使用字典快速查找补数:

def twoSum(nums, target):
    d = {}
    for i, num in enumerate(nums):
        if target - num in d:
            return [d[target - num], i]
        d[num] = i

5. 滑动窗口问题

用字典记录窗口内字符频率:

def lengthOfLongestSubstring(s):
    char_index = {}
    start = max_len = 0
    for i, char in enumerate(s):
        if char in char_index and char_index[char] >= start:
            start = char_index[char] + 1
        char_index[char] = i
        max_len = max(max_len, i - start + 1)
    return max_len

效率优势

  1. 查找:字典的查找操作时间复杂度为 ( O(1) )。
  2. 插入和删除:字典的插入和删除操作也为 ( O(1) ),适合大规模数据的快速操作。
  3. 遍历:遍历时间复杂度为 ( O(n) ),取决于字典中元素的数量。

在 LeetCode 中,利用字典可以显著优化性能,尤其在需要频繁查找、统计或建立映射关系的题目中。

标签:python,mapping,value,char,dict,print,键值,字典
From: https://www.cnblogs.com/lmc7/p/18643517

相关文章

  • Python通过locust实现接口压测
    1、下载locust包1pipinstalllocust2、脚本内容如下文件名称为test.pytimeout来调整压测时长,单位是秒1fromlocustimportHttpUser,task2fromdatetimeimportdatetime3importrequests4importtime5importjson6importos78host='http://x......
  • python中的set()
    在Python中,set()是用来创建集合的内置函数。集合是一个无序且不重复的元素集合,在LeetCode刷题中经常用来处理去重、集合操作(如交集、并集、差集)、快速查找等问题。基本特性无序性:集合中的元素没有顺序。不重复性:集合会自动去除重复元素。可变性:集合本身可以修改,但其中的......
  • Python selenium 爬虫设置
    Linux服务器上可以使用Selenium来进行网页爬取。为了在Linux服务器上使用Selenium,通常需要做一些额外的配置,特别是与浏览器和浏览器驱动的兼容性相关配置步骤安装Selenium:你需要确保安装了Selenium库。可以使用以下命令来安装:pipinstallselenium安装浏览器驱......
  • X00119-SDN下移动边缘计算市场中的智能动态数据卸载python实现
    软件定义网络(SDN)和移动边缘计算(MEC),能够动态管理和满足终端用户的计算需求,已经成为5G网络的关键使能技术。此项目研究了在多MEC服务器和多终端用户环境下,终端用户选择MEC服务器及其数据卸载的联合问题,以及MEC服务器的最优定价问题。SDN技术提供的灵活性和可编程性使得所提框架的实......
  • Python 使用装饰器 decorator 修改函数行为
    Python使用装饰器decorator修改函数行为使用装饰器修改函数行为使用带有返回值和参数的被装饰函数创建一个可以接受参数的装饰器使用多个装饰器使用装饰器修改函数行为Python中装饰器(decorator)的概念基于Decorator设计模式,这是一种结构化设计模式。此模式允许......
  • python-nmap实现python利用nmap扫描分析
    目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异步扫描python-nmap的源码分析前言Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里。可以使用python-nmap这个python库,它提供了一个简单的接口来使用nmap进行扫描。python-nmap的基本使用在......
  • python蓝桥杯刷题4
    1.好数题解:首先分析题目要求奇数位上的数字是奇数,偶数位上的数字是偶数。开始解题,定义一个count变量为0,输入一个数字,for循环从1开始遍历到n+1,定义一个x作为一会的判断条件,将数字转换为字符串的形式,使用len函数计算出它的长度,作为坐标,坐标是从0开始到num1的长度。根据坐标去判......
  • Python 代码实现生命之轮Wheel of life
    最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用Python创建生命倒计时图表,珍惜时间,活在当下。生命之轮(Wheeloflife),这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer提出,生命之轮使人能够根据此刻的价值观、愿景和优先事项,规划......
  • python的collections包
    collections模块是Python标准库的一部分,提供了多种用于处理集合数据结构的工具,其中defaultdict是一个非常常用的容器类。它是字典的一个子类,可以在访问不存在的键时返回一个默认值,而不是抛出KeyError异常。除此之外,collections模块还提供了许多类似于defaultdict的工......
  • python中的可不可变,可不可哈希,可不可修改
    在Python中,可不可变性、可不可哈希性、以及是否支持修改是理解数据类型行为的关键。以下是对这些特性的详细分析,包括定义、例子和它们之间的联系。1.可变性vs不可变性定义可变性:可变类型的数据可以直接修改,而不会改变其引用(内存地址)。不可变性:不可变类型的数据在创建后......