专栏首页生物信息学、python、R、linuxpython字典一个key映射多个value

python字典一个key映射多个value

有时候我们想在字典中存储更多的信息,一个key对应多个value,但是又不想做两个字典。那么,我们可以将多个值放到另外的容器中, 比如列表或者集合中。比如,可以构造下面这样的字典:

d = {
    'a' : [1, 2, 3],
    'b' : [4, 5]
}

如果想保持元素的插入顺序可以使用列表, 如果想去掉重复元素可以使用集合。

如果我们自己实现的话:

d = {}
for key, value in pairs:
    if key not in d:
        d[key] = []
    d[key].append(value)

不过可以使collections库中的defaultdict会更为简洁,也更加常用:

d = defaultdict(list)
for key, value in pairs:
    d[key].append(value)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python中简明的小tips

    for-else一般用于遍历失败的情况,在循环完整结束后才执行else;如果中途从break跳出,则连else一起跳出。

    生信编程日常
  • MaxSubarray最大子序和问题

    回顾leetcode原来做过的题,看到了经典的最大子序和问题,收藏了一个好回答。 这个问题是这样的(https://leetcode.com/problems...

    生信编程日常
  • hisat2-build建立索引所需的SNP文件

    hisat2建立索引的时候支持将SNP的信息考虑进基因组中,在比对的过程中,不会将Alt SNP当做mismatch看待。

    生信编程日常
  • python学习笔记-迭代

    python中我们可以对list、tuple、dict或者其他可迭代的对象进行迭代从而遍历取出各个元素。

    py3study
  • Redis 哈希(Hash)

    Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 2^3...

    周小董
  • iOS Category 添加属性实现原理 - 关联对象

    typedef OBJC_ENUM(uintptr_t, objc_AssociationPolicy) { OBJC_ASSOCIATION_ASS...

    用户1941540
  • 软件都是如何被“破解”的?开发者有办法阻止破解版的产生吗?

    软件的破解属于正常流程的反向过程,破解软件主要目的在于如何最大程度的获取利益,而且大部分的破解软件都和正版收费有一定的关联,破解软件之所以有如此大的市场就是因为...

    程序员互动联盟
  • 基于Scala Trait的设计模式

    在《作为Scala语法糖的设计模式》中,我重点介绍了那些已经融入Scala语法的设计模式。今天要介绍的两个设计模式,则主要与Scala的trait有关。 Dec...

    张逸
  • swagger基本使用

    Swagger能成为最受欢迎的REST APIs文档生成工具之一,有以下几个原因:

    公众号 IT老哥
  • OC - Association 关联对象

    默认情况下,由于分类底层结构的限制,不能直接给 Category 添加成员变量,但是可以通过关联对象间接实现 Category 有成员变量的效果。 传送门:O...

    师大小海腾

扫码关注云+社区

领取腾讯云代金券