【问题标题】:Python how to edit data in a namedtuple stored in a list?Python如何编辑存储在列表中的namedtuple中的数据?
【发布时间】:2013-02-06 14:12:49
【问题描述】:
import struct
from collections import namedtuple

StructPageNum = namedtuple('FDResult', ['DeviceID', 'PageNum','PicSize','PicData'])
PageNumList = []

Node = StructPageNum(DeviceID='NR09', PageNum=[],PicSize=100,PicData='')
PageNumList.append(Node)

PageNumList[0].PicData = 'hello' //how to do at here?

问题

如何编辑 PicData 的值?

【问题讨论】:

  • 因为python就像C
  • 不,它不像 C。一方面,行 cmets 以 # 开头,而不是 //
  • 元组是不可变的数据结构,所以不能替换值,只能创建一个改变了值的新元组。
  • 问题是您使用的是不可变元组,然后尝试对其进行更新——您唯一的选择是替换整个内容或使用不同的数据类型。

标签: python arrays struct namedtuple


【解决方案1】:

在我看来,您可以使用命名元组的 _replace 方法很容易地做到这一点:

PageNumList[0] = PageNumList[0]._replace(PicData='hello')

这会在您的PageNumList 中添加一个新的namedtuple,它看起来很像旧的namedtuple,只是我们更改了PicData“属性”。你不能编辑你已经拥有的命名元组,因为namedtuples 是不可变的(就像它们的未命名对应物:tuples

【讨论】:

  • 语法错误:关键字不能是表达式?
  • @C.Y -- 抱歉,引用过度 :)
  • 是的,只需阅读 _replace 文档,弄清楚,无论如何,谢谢!
  • 稍微详细地说,您不能编辑namedtuple,它们是不可变的。 _replace() 返回一个带有的新酒
  • @mgilson 可以留下联系方式吗?你太酷了。只是为了联系目的,不是为了提问。问题我会在这里发帖,加油!
猜你喜欢
  • 1970-01-01
  • 2016-06-12
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多