将命名元组转换为字典

2023-12-22

我在 python 中有一个命名元组类

class Town(collections.namedtuple('Town', [
    'name', 
    'population',
    'coordinates',
    'population', 
    'capital', 
    'state_bird'])):
    # ...

我想将 Town 实例转换为字典。我不希望它与城镇中田地的名称或数量严格相关。

有没有办法编写它,以便我可以添加更多字段,或者传递一个完全不同的命名元组并获取字典。

我无法更改原始类定义,因为它在其他人的代码中。所以我需要获取一个 Town 的实例并将其转换为字典。


TL;DR:有一个方法_asdict为此提供的。

下面是用法演示:

>>> from collections import namedtuple
>>> fields = ['name', 'population', 'coordinates', 'capital', 'state_bird']
>>> Town = namedtuple('Town', fields)
>>> funkytown = Town('funky', 300, 'somewhere', 'lipps', 'chicken')
>>> funkytown._asdict()
{'name': 'funky',
 'population': 300,
 'coordinates': 'somewhere',
 'capital': 'lipps',
 'state_bird': 'chicken'}

这是一个记录方法 https://docs.python.org/3/library/collections.html#collections.somenamedtuple._asdict命名元组,即与 python 中通常的约定不同方法名称上的前导下划线并不阻止使用。与添加到命名元组的其他方法一起,_make, _replace, _source, _fields,它有下划线只是为了尝试防止与可能的字段名称发生冲突。


Note:对于一些 2.7.5

>>> vars(funkytown)
OrderedDict([('name', 'funky'),
             ('population', 300),
             ('coordinates', 'somewhere'),
             ('capital', 'lipps'),
             ('state_bird', 'chicken')])

有一段时间,文档提到了这一点_asdict已过时(参见here https://docs.python.org/3.3/library/collections.html#collections.somenamedtuple._asdict),并建议使用内置方法vars https://docs.python.org/3/library/functions.html#vars。这个建议现在已经过时了。为了修复a bug http://bugs.python.org/issue24931与子类化相关,__dict__存在于命名元组上的属性再次被删除这次提交 https://hg.python.org/cpython/rev/fa3ac31cfa44.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将命名元组转换为字典 的相关文章

随机推荐

  • .NET 4.0 重大更改 - 使用标记扩展作为 XAML 样式的属性设置器的值

    在 NET 3 5SP1 中 我有一个具有以下属性设置的样式
  • phonegap navigator.connection 未定义

    我使用时遇到问题Phonegap 我使用控制台创建了一个测试应用程序 phonegap create ProjectTest cordova platform add ios cordova build 然后打开生成的 Xcode 项目并向
  • 通用 jQuery 在 HTML5 验证后禁用所有表单上的提交按钮

    如果这是一个基本的事情 请原谅我 因为我是 Javascript jQuery 的新学习者 我一直在尝试禁用提交按钮以禁用多个提交 我在这里也遇到了多种解决方案 但所有这些都使用了特定的表单名称 但我想对所有页面上的所有表单应用全局解决方案
  • 检索播放列表中包含的视频 ID - YouTube API v3

    我一直在使用以下方法来检索特定 YouTube 播放列表中包含的所有视频 ID 标题和默认缩略图 以便在动态播放列表轮播中使用 然后将 ID 传递到一个数组 该数组用于动态创建缩略图轮播 请注意 播放列表 变量是通过外部化 XML 值定义的
  • 有没有一种方法可以在代码中克隆一个或多个实体(记录)

    注意 此时我在这个项目上停留在 2sxc v9 43 2 上 从我的内容类型中选择一组记录后 我需要能够复制它们并沿途更改其中一个字段 到目前为止 这是我几乎可行的想法 用例很简单 他们有人们可以注册的程序 他们每个季节都有变化 但变化很小
  • 使用支持 ASIO 的 portaudio 构建 pyaudio

    我在 win32 上运行 Python 2 7 3 MSC v 1500 32 位 英特尔 我需要构建支持 ASIO 的 portaudio 并将其绑定到 pyaudio 以在 Windows 7 下使用它 基本上我想从 python 访问
  • 如何在不使用 flatMapsGroupWithState 的情况下使用 Structured Streaming 2.3.0 在 Spark 中进行无状态聚合?

    如何在不使用 flatMapsGroupWithState 或 Dstream API 的情况下使用 Structured Streaming 2 3 0 在 Spark 中进行无状态聚合 寻找一种更具声明性的方式 Example sele
  • 使用迭代器调用擦除与 const_iterator

    为什么调用erase容器的成员函数const iterator fail 它适用于非常量iterator 这不会编译 因为container iterator and container const iterator是两种不同的类型 并且擦
  • 如何解决错误“不能一次多次借用 `*self` 作为可变的”[重复]

    这个问题在这里已经有答案了 我是 Rust 新手 这是一段计算机股票交易的代码 该策略将在以下情况下买入一些股票 SignalTrigger触发 并在 30 岁 90 岁之后以不同的方式出售这些股票 代码无法编译 这是代码 use std
  • 如何从日期中获取星期几名称?

    Given 03 09 1982我们怎么能说这是哪一周的哪一天呢 在这种情况下 它将是Tue 是否可以在单个查询中获取 SQL gt SELECT TO CHAR date 1982 03 09 DAY day FROM dual DAY
  • 错误:ENOENT,Heroku 中的 stat '/app/public/views/index.html'

    我在 Heroku 应用程序上提供静态视图时遇到错误 奇怪的是 Heroku 似乎将 app 附加到我的静态文件路径的前面 我不知道为什么 路径应该是 public views index html 我最近尝试了 Stack 提出的解决方案
  • 即时创建 Excel 文件并将其下载/保存在客户端上

    Question ASP NET Core 1 1 中以下代码的最后三行的替代方案是什么和 或解决方法是什么 在这最后三行VS2015正在抱怨HttpResponse does not contain a definition for Ou
  • Linux 的图形 DIFF 程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 搜索非 ASCII 文档

    我的计算机上的应用程序需要读入文本文件 我有好几个 其中一个不起作用 该程序无法读取它并告诉我其中某个地方有一个坏字符 我的第一个猜测是那里有一个非 ASCII 字符 但我不知道如何找到它 Perl 或任何通用正则表达式都会很好 有任何想法
  • 插入到不同服务器上的 MySQL 数据库

    在 mysite1 com 上运行的脚本中使用 PHP 和 MySQL 我尝试将 mysite2 com 上的表中的所有行和列复制到 mysite1 com 上的相同表 已创建 中 首先 我连接到两个数据库 我已经在 mysite2 com
  • Laravel 5 的 wherePivot 问题

    我正在使用 Laravel 5 但遇到问题 gt wherePivot 处理多对多关系 当我dd 该 SQL 看起来 Eloquent 正在数据透视表中查找具有 pose state 的记录 pose id 为 null 我希望这是一个简单
  • 无法从类型 [java.lang.Object[]] 转换为类型

    我有 Spring Web 应用程序 JPA Hibernate MySQL 我有两个 DAO 类 客户DAO Entity Table name customers public class Customer Id Column name
  • iOS 14 小部件中的动画

    我找不到在小部件中实现 ProgressBar 的解决方案 我明白了 如果文本组件的类型为 timer 则应该更改该组件 我看到默认的小部件时钟 带有漂亮的移动箭头动画 但是我可以在小部件中实现自定义动画吗 根据框架工程师的说法开发者苹果论
  • PHP 中 MySQL 二进制 GEOMETRY 字段的转换

    我正在开发一个集成 Mapquest 地图并使用 Mapquest API 的应用程序 目前我想实现以下目标 注册用户必须输入纬度和经度信息 并且在数据库中该信息必须存储为几何类型字段 相反 查看其帐户的用户应该会看到输入的纬度和经度信息
  • 将命名元组转换为字典

    我在 python 中有一个命名元组类 class Town collections namedtuple Town name population coordinates population capital state bird 我想将