首页
学习
活动
专区
圈层
工具
发布

Python在生物信息学中的应用:在字典中将键映射到多个值上

我们想要一个能将键(key)映射到多个值的字典(即所谓的一键多值字典[multidict])。 解决方案 字典是一种关联容器,每个键都映射到一个单独的值上。...如果想让键映射到多个值,需要将这多个值保存到另一个容器(列表、集合、字典等)中。..., defaultdict 会自动为将要访问的键(即使目前字典中并不存在这样的键)创建映射实体。...如果你并不需要这样的特性,你可以在一个普通的字典上使用 setdefault() 方法来代替。...因为每次调用都得创建一个新的初始值的实例(例子程序中的空列表 [] )。 讨论 一般来说,构建一个多值映射字典是很容易的。但是如果试着自己对第一个值做初始化操作,就会变得很杂乱。

2.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MongoDB中的限制与阈值

    如果更新的值导致索引条目超过索引键限制,则对索引字段的更新将出错。如果现有文档包含索引条目超过该限制的索引字段,则导致该文档在磁盘上重新定位的任何更新都将返回错误。...提示 另请参考: 分片操作限制中的唯一索引限制 WiredTiger存储引擎从覆盖查询返回的NaN值始终为double类型 如果从索引覆盖的查询返回的字段的值为NaN,则该NaN值的类型始终为double...隐藏索引 你无法隐藏_id索引。 在隐藏索引上无法使用hint() 数据 限制集合中的最大文档数量 如果使用max参数为限制集合指定最大文档数,则该限制必须少于2^32个文档。...在MongoDB 4.2和更早版本中,一旦对集合进行分片,则分片键是不可改变的。也就是说,您不能为该集合选择其他分片键。...将2d索引用于球形查询可能会导致错误的结果,例如将2d索引用于环绕两极的球形查询。 地理空间坐标 有效的经度值在-180到180之间(包括两者)。 有效的纬度值在-90到90之间(包括两者)。

    15.9K10

    索引系列:2dsphere索引

    如果文档缺少2dsphere索引所在字段(或者该字段为null或空数组),则MongoDB不会将文档条目添加到索引中。对于插入,MongoDB会插入文档,但不添加到2dsphere索引。...对于包含2dsphere索引键以及其他类型键的复合索引,该索引是否引用文档只取决于2dsphere索引字段。 MongoDB的早期版本仅支持2dsphere (Version 1)索引。...分片键限制 对集合做分片时,不能将2dsphere索引用作分片键。但是,您可以通过使用一个不同的字段作为分片键来在分片集合上创建地理空间索引。...如果您尝试插入一个在2dsphere索引字段中包含非几何数据的文档,或者在一个索引字段中包含非几何数据的集合上构建2dsphere索引,该操作将失败。...location field>是其值为GeoJSON对象或旧式坐标对的字段。

    3.4K10

    MongoDB实战面试指南:常见问题一网打尽

    问题:MongoDB中的$set和$setOnInsert操作符有什么区别? 答案:在MongoDB中,set操作符用于更新文档中的字段。如果字段不存在, set将创建该字段并将其值设置为指定的值。...如果字段不存在,将创建该字段并将其值设置为指定的增量;如果字段已存在且为数字类型,则将其值增加或减少指定的增量。...复合索引的字段顺序对查询性能有影响,应该根据查询模式和数据分布来选择合适的字段顺序。 多键索引(Multikey Index):多键索引用于数组字段,为数组中的每个元素创建索引条目。...文档(Document)是MongoDB中存储数据的基本单位,类似于关系数据库中的行(Row)。每个文档都是一个键值对的集合,其中键是字段名,值是字段值。字段值可以是任何BSON支持的数据类型。...问题:MongoDB中的索引是如何工作的?索引对查询性能有什么影响? 答案:MongoDB中的索引用于加速查询操作。

    3.6K10

    浅尝辄止MongoDB:基础

    键是一个标签,大致相当于RDBMS中的列名,可以使用键引用文档中的数据。 在关系数据库中,必须能够通过某种方式唯一定位一条指定的记录,否则将无法引用特定的行。...(4)键/值 文档由键和值组成,键和值总是成对出现。与RDBMS不同,RDBMS中的所有字段必须有值,即使值是NULL,而MongoDB不要求文档必须含有特定的值。...如果MongoDB中不含某个键/值对,那它就被认为是不存在的。 2. 存储格式 MongoDB使用一种称为BSON(二进制JSON的英文简称)的格式存储数据,因此是无模式的。...(2)文档 文档由键值对组成,键的类型为字符串,但可以使用许多不同类型的数据作为值。下面是所有可以添加到文档中的数据类型: String:字符串类型,常用于存储文本值,区分大小写。...内嵌信息意味着在文档自身中添加某种类型的数据,引用信息意味着创建对另一个包含了特定数据的文档的应用。

    2K10

    使用MongoDB开发过程常见错误分析

    所以当我们在mongo shell中直接使用整数字面量时,实际上它是以double表示的,而当这个整数字面量大约超过16位数字时,就可能发生有些整数无法精确表示的情况,只能使用一个接近能表示的整数来替代...使用随机值类型的字段作为片键,例如version 4 UUID (Random UUID) b) .对自增长型字段创建哈希索引,创建片键时通过hashed选项,指定使用该哈希索引值作为片键,例如: ?...但问题是,首先,在MongoDB中文档有大小限制,目前版本中每个文档最大不能超过16M,所以使用内嵌文档存储无法满足粉丝或关注好友增长的需求,大用户节点可能将会有大量粉丝或关注用户,超过16M,届时程序将很难扩展...5 滥用upsert更新参数 问题描述: 在我们的业务场景中,通常都同时有插入(insert)数据和更新(update)数据的需求,很多时候,我们无法判断正要写入的数据是否已经存在于数据库中,对于这种情况...,MongoDB为update操作提供了upsert选项,使得我们在一个操作中能自动处理上述情况,即当数据库不存在写入数据时,执行insert操作,当数据库已经存在写入数据,则执行update操作。

    2.8K30

    MongoDB是什么?看完你就知道了!

    而MongoDB数据的基本单元是BSON文档,在键值中有指向不定类型值的键,MongoDB拥有即时查询,但不支持联结操作,简单的键值存储只能根据单个键来获取值,不支持事务,但支持多种原子更新操作。...一对多的关系 :在“多”的集合关系中添加id指向依赖的id。 多对多 :在其中一种对应关系中使用对象数组指向另外一个对象。...整个文档大小会限制在16m以内,因为这样可以防止创建难看的数据类型,且小文档可以提升性能,批量插入文档理想数字范围是10~200,大小不能超过16MB。...(3)唯一性索引 (4)稀疏索引 如索引的字段会出现null的值,或是大量文档都不包含被索引的键。...(2)分片的核心操作 分片一个集合:分片是根据一个属性的范围进行划分的,MongoDB使用所谓的分片键让每个文档在这些范围里找到自己的位置 块:是位于一个分片中的一段连续的分片键范围,可以理解为若干个块组成分片

    1.1K30

    MongoDB查询(基本查询条件操作符介绍)

    在使用第一个参数时,我们需要注意一点:该查询文档中“键值对”中的值必须为常量!...综上,我们总结一下如果需要使用第二个参数,则使用的技巧为:指明所有需要得到的键的值为非0的数字,如果还要过滤键"_id",则再指明"_id"这个键值为0即可。...将他们组合应用,就可以查询值在某个范围内的文档了,比如我们要查询18-30岁(含)的所有用户: ? 这种范围查询操作符,除用在值为数字的键之上外,对于值为日期的键的范围匹配也尤为好用!...---- 【正则表达式】 正则表达式在任何语言中都是操作字符串的一大利器!在MongoDB的查询中,其依然威力不减。正则表达式可以灵活的匹配字符串类型的值。...我们在最前边也介绍了,MongoDB支持正则表达式这种数据类型,即“键值对”中允许“值”为正则表达式,对于这种键值对,正则表达式也可以匹配成功: ?

    2.9K30

    MongoDB是什么?看完你就知道了!

    而MongoDB数据的基本单元是BSON文档,在键值中有指向不定类型值的键,MongoDB拥有即时查询,但不支持联结操作,简单的键值存储只能根据单个键来获取值,不支持事务,但支持多种原子更新操作。...一对多的关系 :在“多”的集合关系中添加id指向依赖的id。 多对多 :在其中一种对应关系中使用对象数组指向另外一个对象。...整个文档大小会限制在16m以内,因为这样可以防止创建难看的数据类型,且小文档可以提升性能,批量插入文档理想数字范围是10~200,大小不能超过16MB。...(3)唯一性索引 (4)稀疏索引 如索引的字段会出现null的值,或是大量文档都不包含被索引的键。...(2)分片的核心操作 分片一个集合:分片是根据一个属性的范围进行划分的,MongoDB使用所谓的分片键让每个文档在这些范围里找到自己的位置 块:是位于一个分片中的一段连续的分片键范围,可以理解为若干个块组成分片

    1.4K20

    MongoDB权威指南学习笔记(2)--设计应用

    ,无法对形如db.users.find({“loc.city”:”xxx”})的查询使用索引 索引数组 对数组建立索引,可以高效的搜索数组中的特定元素 多键索引 对于索引的键,如果这个键在文档中是一个数组...,那么这个索引就会呗还标记为多键索引,多键索引可能会比非多键索引慢一些,可能会友多个索引条目指向同一个文档,因此在返回结果时必须要先去除重复的内容 索引基数 基数就是集合中某个字段拥有不同值的数量,一般来说...$sort 根据任何字段或多个字段进行排序 $limit 接受一个数字n,返回结果集中的前n个文档 $skip 接受一个数字m,丢弃结果集中的钱n个文档 MapReduce 找出集合中的所有键 map函数使用特定的...那么需要将这些字段内嵌到文档中 如果在查询文档时经常需要将需要将某个字段排除出去,那么这个字段应该放在另外的集合中 内嵌数据与引用数据的比较: 更适合内嵌 更适合引用 子文档较小 子文档较大 数据不会定期改变...不适合MongoDB的场景 不支持事务 在多个不同维度上对不同类型的数据进行连接 注: 上述测试在MongoDB 3.4.3-8-g05b19c6中成功 上述文字皆为个人看法,如有错误或建议请及时联系我

    9.2K30

    MongoDB基础之BSON数据类型

    文档中的数组有个特性,就是MongoDB能理解其结构,并指导如何深入数组内部对其内容进行操作。这样就能用内容对数组进行查询和构建索引了。 MongoDB可以使用原子更新修改数组中的内容。...数字只能表示为双精度数,有些64位的整数并不能精确地表示为64位浮点数。所以要是存入一个64位整数,然后在shell中查看,它会显示一个内嵌文档,表示可能不准确。...例如,在集合中存入一个文档(不是在shell模式下存入的),其中myInterger键的值设为一个64位整数3,然后在shell中查看,如下: >doc = db.nums.findOn(); { “...4、Objects MongoDB对BSON对象的比较使用以下顺序: 1.按照键值对在BSON对象中出现的顺序递归比较它们。 2.比较关键字段名称。 3.如果关键字段名称相等,则比较字段值。...4.如果字段值相等,则比较下一个键/值对(返回步骤1)。没有下一个字段的对象小于有下一个字段的对象。 5、日期和时间戳 在3.0.0版本中进行了更改,将日期对象放在时间戳对象之前排序。

    10.5K30

    【mongo 系列】索引浅析

    使用索引的查询,会通过索引找到文档,使用索引能够极大的提升查询效率 mongodb 中的索引 mongodb 中的索引与多种索引类型,梳理一下看看效果 索引类型 描述 demo 单字段索引 在某一个特定的字段上建立索引...官网 MongoDB 为文档集合中的任何字段上的索引提供了完整的支持 默认情况下,所有集合在_id字段上都有一个索引,应用程序和用户可以添加额外的索引来支持重要的查询和操作 复合索引 MongoDB...支持复合索引,其中单个索引结构保存对集合文档中多个字段的引用。...1、2d,对在二维平面上坐标点为存储的数据使用索引,是2.2版本中的坐标对。...通过索引对查询结果进行排序 为了支持有效的查询,在指定索引字段的顺序和排序顺序时间 确保索引有足够的内存 内存有限的情况下,MongoDB 通过保存最近的值来淘汰老值,mongodb 的索引还是很消耗内存的

    2.2K10

    MongoDB基础之BSON数据类型

    数字只能表示为双精度数,有些64位的整数并不能精确地表示为64位浮点数。所以要是存入一个64位整数,然后在shell中查看,它会显示一个内嵌文档,表示可能不准确。...例如,在集合中存入一个文档(不是在shell模式下存入的),其中myInterger键的值设为一个64位整数3,然后在shell中查看,如下: >doc = db.nums.findOn(); { “...文档中的数组有个特性,就是MongoDB能理解其结构,并指导如何深入数组内部对其内容进行操作。这样就能用内容对数组进行查询和构建索引了。 MongoDB可以使用原子更新修改数组中的内容。...4、Objects MongoDB对BSON对象的比较使用以下顺序: 1.按照键值对在BSON对象中出现的顺序递归比较它们。 2.比较关键字段名称。 3.如果关键字段名称相等,则比较字段值。...4.如果字段值相等,则比较下一个键/值对(返回步骤1)。没有下一个字段的对象小于有下一个字段的对象。 5、日期和时间戳 在3.0.0版本中进行了更改,将日期对象放在时间戳对象之前排序。

    5.1K10

    数据库MongoDB-文档操作

    MongoDB的文档操作 在MongoDB中文档是指多个键及其关联的值有序地放置在一起就是文档,其实指的就是数据,也是我们平时操作最多的部分。 MongoDB中的文档的数据结构和 JSON 基本一样。...{multi:true}); 如果Field不存在,可以新建一个Field db.c1.update({name:"张三"},{$set:{sex:"男"}}) $inc操作符 $inc操作符:可以对文档的某个值为数字型...(只能为满足要求的数字)的键进行增减的操作。...添加时键存在,要求键值类型必须是数组;键不存在,则创建数组类型的键。 向集合c1中所有文档对象添加了数组类型属性hobby,并添加一个值写代码。如果再次执行,表示向hobby中再添加一个值写代码。...db.c1.update({name:"王五"},{$rename:{name:"username"}}); 查询文档 find()函数 在MongoDB中可以使用find()函数查询文档。

    3.3K30

    mongodb必会知识点

    示例如下: 数组中可以包含不同类型的数据元素,包括内嵌文档和数组等。所有 MongoDB 中键 - 值对支持的数据 类型都可以用做数组的值。...在 MongoDB 文档总大小限制为 16MB ,建议使用子文档的形式组织数 据,子文档查询效率要高于多键查询。示例如下: 文档可以做为键的值,即:内嵌文档。...集合创建后系统会自动创建一个索引在 “ id” 键上,它是默认索引,索引名叫 “_id_” ,是无法被删除的。...值得注意的是,当文档不存在指定键 时,会被认为键值是 “null” ,所以 “null” 也会被认为是重复的,所以一般被作为唯一索引的键,最好都要 有键值对。...需要停止一个从机,在主服务器中运行下面命令 在一主一从关系中,任意节点宕机都无法选举出主节点,无法提供写操作,此时需要加入仲裁者节点即 可。

    1.8K10

    明了 | MongoDB 外键的基本使用

    小小继续进行学习,这次学习的内容是MongoDB外键的基本使用。 表示表关系的方法 在传统的关系型数据库当中,表示表关系,数据是通过索引来完善。...而在MongoDB中,表示表关系,使用的是嵌套,即,一个文档嵌套一个文档的方法,作为MongoDB的两个文档的关联,以及使用,reference link作为文档和文档之间的关联。...$ref 该$ref字段包含引用文档所在的集合的名称。 $id 该$id字段包含_id引用文档中字段的值。 $db 可选的。...// 创建外键进行关联,其中外键为refB // 其中选择对db数据库进行操作,选择id作为数据库的关联 DBRef refB = new DBRef(db,"transations....jpg] 可以看到其中$id 对应的值为其数据库mongodb的外键。

    2.4K20

    玩转MongoDB: 索引,速度的引领

    第二种索引,效果非常好,因为不需要在内存中对大量数据进行排序。但是,MongoDB不得不扫描整个索引以便找到所有文档。...因此,如果对查询结果的范围做了限制,那么MongoDB在几次匹配之后就可以不再扫描索引,在这种情况下,将排序键放在第一位是一个非常好的策略。...三、唯一索引 唯一索引可以确保集合的每个文档的指定键都有唯一值。如果想保证不同文档的“name”键拥有不同的值,在“name”键上创建一个唯一索引就可以了。...四、稀疏索引 唯一索引会把null看作值,所以无法将多个缺少唯一索引中的键的文档插入到集合中。然而,在有些情况下,你可能希望唯一索引只对包含相应键的文档生效。...一、全文索引 mongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制。在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题。

    87130

    玩转MongoDB: 索引,速度的引领

    第二种索引,效果非常好,因为不需要在内存中对大量数据进行排序。但是,MongoDB不得不扫描整个索引以便找到所有文档。...因此,如果对查询结果的范围做了限制,那么MongoDB在几次匹配之后就可以不再扫描索引,在这种情况下,将排序键放在第一位是一个非常好的策略。...三、唯一索引 唯一索引可以确保集合的每个文档的指定键都有唯一值。如果想保证不同文档的“name”键拥有不同的值,在“name”键上创建一个唯一索引就可以了。...四、稀疏索引 唯一索引会把null看作值,所以无法将多个缺少唯一索引中的键的文档插入到集合中。然而,在有些情况下,你可能希望唯一索引只对包含相应键的文档生效。...一、全文索引 mongoDB有一个特殊的索引用在文档中搜索文本,之前的博客都是用精确匹配来查询字符串,这些技术有一定的限制。在搜索大块文本的速度非常慢,而且无法处理自然语言礼节的问题。

    1.8K40

    mongodb存储的数据类型(redis存储数据类型)

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。...MongoDB的默认数据库为”db”,该数据库存储在data目录中。 MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。...MongoDB在JSON六种数据类型(null,布尔,数字、字符长、对象和数组)的基础上上添加了一些其他数据类型,以实现对时间、浮点数、正则函数等的操作。 下表为MongoDB中数据类型。...注意Date()函数与Js中一样,是返回日期格式的字符串,日期对象和字符串是无法匹配的,所以执行删除、更新和查询操作时对导致很多问题。...这个键的值可以是任何类型的,默认是个 ObjectId 对象。在一个集合里面,每个文档都有唯一的_id值,确保一个集合里每个文档都能被唯一标识。

    4.7K11
    领券