python dict初始化大小_在Python中初始化/创建/填充Dict的Dict

我必须在为我的研究编写代码时经常这样做。您将希望使用defaultdict包,因为它允许您添加键:值对在任何级别上,通过简单的分配。回答完你的问题我会给你看的。这是直接来源于我的一个程序。关注最后4行(不是注释)并在块的其余部分跟踪变量,看看它在做什么:from astropy.io import fits #this package handles the image data I work with

import numpy as np

import os

from collections import defaultdict

klist = ['hdr','F','Ferr','flag','lmda','sky','skyerr','tel','telerr','wco','lsf']

dtess = []

for file in os.listdir(os.getcwd()):

if file.startswith("apVisit"):

meff = fits.open(file, mode='readonly', ignore_missing_end=True)

hdr = meff[0].header

oid = str(hdr["OBJID"]) #object ID

mjd = int(hdr["MJD5"].strip(' ')) #5-digit observation date

for k,v in enumerate(klist):

if k==0:

dtess = dtess+[[oid,mjd,v,hdr]]

else:

dtess=dtess+[[oid,mjd,v,meff[k].data]]

#header extension works differently from the rest of the image cube

#it's not relevant to populating dictionaries

#HDUs in order of extension no.: header, flux, flux error, flag mask,

# wavelength, sky flux, error in sky flux, telluric flux, telluric flux errors,

# wavelength solution coefficients, & line-spread function

dtree = defaultdict(lambda: defaultdict(lambda: defaultdict(list)))

for s,t,u,v in dtess:

dtree[s][t][u].append(v)

#once you've added all the keys you want to your dictionary,

#set default_factory attribute to None

dtree.default_factory = None

这是摘要版本。在首先,对于一个n级字典,必须进行排序和转储

所有内容都以[key_1,key_2,

... ,键\n,值]。在

然后,要初始化n级字典,

只需输入“defaultdict(lambda:”(减去引号)n-1次,

在末尾粘贴“defaultdict(list)”(或其他数据类型),然后

关闭括号。在

用for循环附加到列表。*注意:当您访问数据值时

你可能会有最低档的U键

[…][key_n][0]获取实际值,而不仅仅是数据的描述

在其中键入。在

*编辑:当你的字典足够大的时候,设置

默认的“工厂”属性为“无”。在

如果尚未将default_factory设置为None,则可以稍后通过键入my_dict[key_1][key_2][…][new_key]=new_value,或使用append()命令来添加到嵌套字典中。您甚至可以添加额外的字典,只要您通过这些赋值形式添加的字典本身不是嵌套的。在

在*

警告!该代码段中新添加的最后一行(在该行中,您将default_factory属性设置为None)是super important。你的电脑需要知道你什么时候完成了字典的添加,否则它可能会继续在后台分配内存以防止buffer overflow,耗尽你的内存,直到程序停止运行。这是memory leak的类型。在我写下这个答案后的一段时间里,我艰难地学会了这一点。这个问题困扰了我几个月,我甚至不认为我是最终解决它的人,因为我对内存分配一无所知。在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/343452.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

q7goodies事例_Java 8 Friday Goodies:本地交易范围

q7goodies事例在Data Geekery ,我们喜欢Java。 而且,由于我们真的很喜欢jOOQ的流畅的API和查询DSL ,我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 我们已经写了一些关于Java 8好东西的博客 ,现在我们觉得是时候开始一个…

以太网交换机和路由器的区别,二者有共同点吗?

您知道以太网交换机和路由器有什么不同吗?在osi七层模型上来分析,交换机在第二层工作,路由器在第三层上工作。交换机查找某一台电脑的方式是通过查找mac地址,就是通过您网卡上固有的一个唯一识别编号来进行查找的。路由器查找一台…

【渝粤教育】国家开放大学2018年春季 3780-22T燃气设备操作与维护 参考试题

科目编号:3780 座位号 2017-2018学年度第二学期期末考试 燃气设备操作与维护 试题 2018年 7 月 一、判断题(本大题共10小题,每题2分,共计20分) 1.绝对压力低于大气压力时,用真空表测的的压力称…

【渝粤教育】国家开放大学2018年春季 7067-21T康复护理学 参考试题

编号:7067 座位号 2017~2018学年度第二学期期末考试 康复护理学试题 2018年07月 一、名词解释(4小题,每题5分,共20分) 康复护理学 神经系统的可塑性 代谢当量 小脑性共济失调步态 二、填空 &#xff…

工业以太网交换机有多少个快速以太网接口?

工业以太网交换机应用于复杂的工业环境中实时以太网数据传输,以太网交换机是非常的重要,它把握着一个网络的命脉,有人会提出以太网交换机有多少个快速以太网接口?到底该如何进行选择呢?接下来我们就跟随飞畅科技的小编…

git粘贴命令行_如何使用git检测复制和粘贴代码?

我只是再次阅读 git-blame手册页,注意到这部分:A particularly useful way is to see if an added file has lines created by copy-and-paste from existing files. Sometimes this indicates that the developer was being sloppy and did not refactor the code …

有关Spring缓存性能的更多信息

这是我们最后一篇关于Spring的缓存抽象的文章的后续文章 。 作为工程师,您可以通过了解所使用的某些工具的内部知识来获得宝贵的经验。 了解工具的行为有助于您在做出设计选择时变得更加成熟。 在这篇文章中,我们描述了一个基准测试实验和结果&#xff…

【渝粤教育】国家开放大学2018年春季 7394-22T政府公共关系 参考试题

试卷编号:7394 座位号 2017——2018学年度第二学期期末考试 政府公共关系试题 2018年7月 一、单选题(每空2分,共30分) 政府公共关系以塑造良好形象和获得公众支持为( ) 。 A. 途径 B. 主体 C. 客体 D. 目标政府公共关系客体的复…

【渝粤教育】国家开放大学2018年春季 8126-21T制药工程 参考试题

编号:8126 座位号 2017~2018学年度第二学期期末考试 制药工程试题 2018年5月 一、名词解释(本大题共4小题,每题5分,共20分)。 生物技术药物 干燥 天然药物 制药工程设计 二、单项选择题(本…

PoE交换机如何才能稳定连接和安全使用?

随着PoE技术的不断发展,PoE交换机目前已经处于非常成熟的阶段,但是由于目前监控市场迫于成本的压力,选用的PoE交换机或者线材品质过于低劣,或者方案设计本身不合理,就会导致采用PoE供电的项目维护的工作量特别大&#…

java判断是否第一次出现_利用java判断字符首次出现的位置,java替换最后一个特定字符...

利用java判断字符首次出现的位置利用爪哇判断字符首次出现的位置,目的:(学习视频分享:java视频教程实现代码如下:导入Java。util。收藏品;导入Java。util。LinkedList导入Java。util。列表;导入Java。util。…

javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第3部分

javafx 自定义控件嗨,经过与同事的讨论,我今天决定展示css方法并不是唯一可用于创建自定义控件的方法。 当然,它允许提供一些外观扩展点,但是可以使用代码API使用相同的方法(与向JavaFX的转换)一起使用。 …

【渝粤教育】国家开放大学2018年春季 8625-21T老年心理健康 参考试题

编号:8625 座位号 2017~2018学年度第二学期期末考试 老年心理健康试题 2018年7月 一、名词解释(本大题共6小题,每题5分,共30分) 分神: 选择性思维迟滞: 记忆减退: 注…

【渝粤教育】国家开放大学2018年春季 8659-22T计算机平面设计(1)(2) 参考试题

编号:8659 2017-2018学年度第二学期期末考试 计算机平面设计(1)(2) 试题 2018年5月 一、单项选择题(共 10 小题,每小题4分,共 40 分) 当使用绘图工具时&…

java开发事故如何处理_记一次缓存事故

善于总结,才能更快进步通常,我们队高并发的数据都会进行缓存,而且为了防止缓存过大,通常我们都会把缓存设置一个超时时间,并且会有cache miss机制。本文,我记录一下错误的缓存机制引起的BUG。起因好好的一个…

导轨式网管型工业交换机优势具体在哪里呢?

通过之前的介绍,我们了解到工业交换机可以分为导轨式和机架式、网管型和非网管型结构,那么,导轨式网管型工业交换机具体有哪些优势呢?接下来就由杭州飞畅科技的小编带大家详细了解一下 ,一起来看看吧! 工业…

使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证。 如果您使用Spring Boot,Spring Cloud和Spring Cloud Config,则…

【渝粤教育】国家开放大学2018年秋季 0017-22T大学英语 参考试题

科目编号:0033 座位号 2018-2019学年度第一学期期末考试 工程数学 试题 2018年 11 月 单选题(本大题共10小题,每小题4分,共计40分) 1.设都是阶矩阵,则下列命题正确的是( &#xff…

【渝粤教育】国家开放大学2018年秋季 0107-21T现代货币金融学 参考试题

科目编号:0133 座位号 2018-2019学年度第一学期期末考试 大学物理 试题 2018年 11 月 单选题(本大题共5小题,每小题4分,共计20分) 静电场的高斯定理表明,静电场是 。 A. 有源场 B. 无源场 C. 保守力场 D.…

java session 同步_session同步

对于大型分布式网站来说,一个业务后面往往对应着多台服务器。用户的请求将在不同的服务器之间进行跳转,这样的情形下,我们就需要保持session在不同服务器之间的同步。1、基于数据库的session共享。原理:使用数据库专门用来存储ses…