首页 > 编程语言 >Python dict 高阶特性

Python dict 高阶特性

时间:2022-12-13 18:31:37浏览次数:48  
标签:迭代 Python 散列 random item dict 高阶 字典

特性(基于Python 3.4 流畅的Python 部分可能不适用最新版本)

键必须可散列

字典和集合实现的背后是散列。散列最小单元是表元。

内存开销巨大

相比列表将占用大量内存。典型的用空间换时间。在定义数据类型时,尽可能采用__slots__ 属性可以改变实例属性的存储 方式, 由 dict 变成 tuple

键查询速度极快

基于散列特性字典和集合对in进行了优化。in查询效率非常高

将迭代和更新尽可能分开

无论何时往字典里添加新的键, Python 解释器都可能做出为字典扩容的决定。 扩容导致的结果就是要新建一个更大的散列表, 并把字典里已有的元素添加到新表里。 这个过程中可能会发生新的散列冲突, 导致新散列表中键的次序变化。 要注意的是, 上面提到的这些变化是否会发生以及如何发生, 都依赖于字典背后的具体实现, 因此你不能很自信地说自己知道背后发生了什么。 如果你在迭代一个字典的所有键的过程中同时对字典进行修改, 那么这个循环很有可能会跳过一些键——甚至是跳过那些字典中已经有的键。由此可知, 不要对字典同时进行迭代和修改。 如果想扫描并修改一个字典, 最好分成两步来进行: 首先对字典迭代, 以得出需要添加的内容, 把这些内容放在一个新字典里; 迭代结束之后再对原有字典进行更新

dict 找不到键选择

字典嵌套案例

defaultdict

import collections
import random

data = collections.defaultdict(list)
v = [random.randint(1, 3) for _ in range(10)]

for item in range(5):
    data[item].append(item)

setdefault

import random

data = {}
v = [random.randint(1, 3) for _ in range(10)]

for item in range(5):
    data.setdefault(item, []).append(item)

pop

删除一个指定键值对

d = {}
d.pop(key, default)
# 指定默认值,键不存在时返回默认值。类似 get

reversed

返回倒序键的迭代器

标签:迭代,Python,散列,random,item,dict,高阶,字典
From: https://blog.51cto.com/u_14967494/5934988

相关文章

  • Python工具箱系列(二十)
    数据库操作应是所有合格程序员的基本功,写的一手好SQL对于数据分析师而言更是安身立命之本。大部分软件开发人员使用的数据库都是MySql/MariaDB,毕竟LAMP(linux+apache+mysql+p......
  • python3.9 在ubuntu上编译安装失败解决
    https://cloud.tencent.com/developer/article/1740752下载#下载源码包至`opt`目录wget-c-P/opthttps://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz#......
  • 献芹奏曝-Python面试题-算法-滑动窗口篇
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • 献芹奏曝-Python面试题-算法-数学篇
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • 献芹奏曝-Python面试题-算法-背包问题
    上一篇:献芹奏曝-Python面试题    开篇的话:本文目的是收集和归纳力扣上的算法题,希望用python语言,竭我所能做到思路最清奇、代码最简洁、方法最广泛、性能最高效,了解......
  • Python之退出函数
    有时候需要写的pythonexe有返回值,今天就看了下,发现了一个函数sys.exit(),用起来还可以,但是有个问题。如果你需要用十六进制的数退出的话,不要超过0x7fffffff。因为sys.exit(......
  • python下的符号函数
    一、符号函数的入门:1、符号函数使用准备,导库from sympy import*2、定义符号x,y,z=symbols('xyz')3、应用符号e=cos(x)+14、画符号函数的......
  • Python字符串格式化的三种方式
     #方式一:%name='张三'age=20score=22.556print('%s的年龄为:%d,成绩%f'%(name,age,score))#%3s为此处占3个字符位,不够3位前面空位#%04d为此处占4个......
  • python及pycharm虚拟环境配置
    python虚拟环境"""在实际项目开发中,我么只会给项目配备其所需的环境,所以就需要虚拟环境"""#1.什么是虚拟环境?能够针对相同版本的解释器创建多个分身,每个分身可......
  • win102-Windows环境下pycharnpython安装版下载、配置(win10-x64位32g内存)
    win102-Windows环境下pycharnpython安装版下载、配置(win10-x64位32g内存)1、建议首先安装anaconda(注意配置path环境)。  python国内镜像地址:http://npm.taobao.org/mirr......