栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将字典转换为namedtuple或其他可哈希的dict-like的Python方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将字典转换为namedtuple或其他可哈希的dict-like的Python方法?

要创建子类,您可以直接传递字典的键:

MyTuple = namedtuple('MyTuple', d)

现在要根据此字典或任何其他具有匹配键的字典创建元组实例:

my_tuple = MyTuple(**d)

当心: namedtuple 比较 (有序)。它们旨在替代常规元组,并具有命名属性访问作为附加功能。
进行相等比较时,将不考虑字段名称
。它可能不是您想要的,也不是您期望的

namedtuple
那种!这不同于
dict
相等性比较,后者不但考虑了键而且还比较了不可知顺序。

对于实际上并不需要类型是 tuple子类的
读者,首先使用namedtuple可能没有多大意义。如果只想在字段上使用属性访问语法,那么创建名称空间对象将变得更加简单:

>>> from types import SimpleNamespace>>> SimpleNamespace(**d)namespace(a=1, b=2, c=3, d=4)

我想将字典转换为namedtuple的原因是,它变得可散列,但仍然像字典一样仍然可用

对于像食谱这样的可散列的“ attrdict”,请检查一个冻结的框:

>>> from box import Box>>> b = Box(d, frozen_box=True)>>> hash(b)7686694140185755210>>> b.a1>>> b["a"]1>>> b["a"] = 2BoxError: Box is frozen

更高版本的Python中可能还会提供冻结的映射类型,请观看此PEP草案以接受还是拒绝:

PEP 603-将冻结地图类型添加到集合中



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号