Python 字典中键映射多个值的问题解决

 更新时间:2025年01月17日 10:20:26   作者:大梦三千秋  
本文主要介绍了在Python中实现一个字典multidict中键可以对应多个值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

问题

如何实现一个字典(multidict)的键对应多个值?

解决方法

字典的定义就是一个键对应一个单值的映射。如果想要一个键映射多个值,那么需要将多个值放到其他容器中,例如列表和集合当中,示例代码如下:

a = {
    'x': [1,2,3],
    'y': [4,5]
}

b = {
    'x': {1,2,3},
    'y': {4,5}
}

而选择使用列表还是集合取决于实际的需求。如果需要保持插入元素的顺序,建议选择列表;如果需求需要去掉重复的元素,建议选择集合。

Python 提供的 collections 模块中,defaultdict 可以实现构造这样的字典。defaultdict 有个特征是能够自动初始化每个 key 刚开始对应的值,所以只需要进行添加元素的操作。示例如下:

from collections import defaultdict

dl = defaultdict(list)
dl['x'].append(1)
dl['x'].append(2)
dl['y'].append(3)

ds = defaultdict(set)
ds['x'].add(1)
ds['x'].add(2)
ds['y'].add(3)

print(dl)
print(ds)

这里需要注意的是,defaultdict 会自动为将要访问的键(即使目前字典中不存在这个键)创建映射实体。所以如果不需要这种特性,可以在普通字典中使用 setdefault() 方法代替。示例如下:

d = {}
d.setdefault('x', []).append(1)
d.setdefault('x', []).append(2)
d.setdefault('y', []).append(3)

但这种方法被认为过于繁琐,因为每次调用都要创建新的初始值示例,例如上面代码中的空列表([]

代码解析

上面提及的映射多值的字典,实际上也能够自己实现,但是对于值的初始化会比较麻烦,示例如下:

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

而使用 defaultdict 则会更加简洁:

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

到此这篇关于Python 字典中键映射多个值的问题解决的文章就介绍到这了,更多相关Python 字典键映射值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 在Python web中实现验证码图片代码分享

    在Python web中实现验证码图片代码分享

    这篇文章主要介绍了在Python web中实现验证码图片代码分享,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Python面向对象编程之类的进阶

    Python面向对象编程之类的进阶

    这篇文章主要介绍了Python面向对象编程之类的引用,引用 Reference是对象的指针,引用是内存中真实对象的指针,表示为变量名或者内存地址、每个对象存在至少一个引用,id()函数用于获得引用,想具体了解的小伙伴可以参考下面文章的内容
    2021-11-11
  • Python制作微信好友背景墙教程(附完整代码)

    Python制作微信好友背景墙教程(附完整代码)

    这篇文章主要介绍了Python制作微信好友背景墙教程(附完整代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python开发前景如何

    python开发前景如何

    在本篇文章中小编给大家整理了关于python开发前景的知识点及相关内容,有兴趣的朋友们可以跟着学习参考下。
    2020-06-06
  • Python学习之文件的读取详解

    Python学习之文件的读取详解

    这篇文章主要为大家介绍了Python中如何将文件中的内容读取出去来的方法,文中通过示例进行了详细讲解,感兴趣的小伙伴快跟随小编一起学习一下
    2022-03-03
  • Python实现定时任务的九种方案总结

    Python实现定时任务的九种方案总结

    定时任务是编程中常见的需求,它可以按照预定的时间表执行特定的任务或操作,在Python中,有多种方法可以实现定时任务,下面小编就来和大家详细讲讲吧
    2023-11-11
  • Python实战快速上手BeautifulSoup库爬取专栏标题和地址

    Python实战快速上手BeautifulSoup库爬取专栏标题和地址

    BeautifulSoup是爬虫必学的技能,BeautifulSoup最主要的功能是从网页抓取数据,Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码
    2021-10-10
  • Python GAE、Django导出Excel的方法

    Python GAE、Django导出Excel的方法

    在Python中操作Excel的方法可以通过COM,最常用的跨平台的方法是使用pyExcelerator,pyExcelerator的使用方法可以参考limodou的《使用pyExcelerator来读写Excel文件》。
    2008-11-11
  • Python查找数组中数值和下标相等的元素示例【二分查找】

    Python查找数组中数值和下标相等的元素示例【二分查找】

    这篇文章主要介绍了Python查找数组中数值和下标相等的元素,结合实例形式分析了Python基于二分查找针对数组查找相关实现技巧,需要的朋友可以参考下
    2019-02-02
  • 在Django同1个页面中的多表单处理详解

    在Django同1个页面中的多表单处理详解

    这篇文章主要给大家介绍了在Django同1个页面中的多表单处理的相关资料,文章先给大家介绍了如何快速上手Django实现项目的方法,方便让大家理解和学习,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-01-01

最新评论