python - 命名结构(例如 namedtuple)中的可变长度参数列表 (*args)
问题描述
我想要一个 Python 中的一维数据结构,它允许命名元素,并且还兼容*args
(并且可能**kwargs
)。这样的事情存在吗?
# setup idea (doesn't work)
Tuple = namedtuple("Tuple", ["a", "*b", "c"])
t = Tuple(1, 2, 3, 4)
# desired behavior below
print(t.a)
# output:
# 1
print(t.b)
# output:
# [2, 3]
for x in t:
print(x)
# output:
# 1
# 2
# 3
# 4
该结构还应支持分配。
t.c = 2
for x in t:
print(x)
# output:
# 1
# 2
# 3
# 2
解决方案
我会尽力回答。
*args
是一个list
。
**kwargs
是一个dict
。
它们都是一维的。但它们也可以是多维的。比如、、、list of lists
等dict of lists
。
Dict
允许命名元素。
例如:
a = {'name1': ['a', 'b'], 'name2': ['b', 'c']}
我建议您先在这里阅读有关 python 构建结构的信息 - https://docs.python.org/3/tutorial/datastructures.html
阅读后重新考虑您的问题。
祝你好运!
推荐阅读
- flutter - 启动屏幕列表数据,返回项目生成器功能中的错误
- python - 如何在 Python Pandas 中扩展存储为单个值的可迭代对象?(又名反向分组)
- reactjs - 如何解决 window.opener 周围的 TypeScript 错误?
- powerapps-canvas - PowerApps 中的货币格式化程序
- c - c语言中这两种语法有什么区别?
- websocket - 我可以在 Chromecast 中使用自定义 Websocket 连接吗?
- kotlin - Kotlin/JS:检查 T 是否为枚举
- python - 我需要编码我的列值,然后我需要为 python DataFrame 解码它们
- discord - 来自 discord 服务器的 discord.py bot 中添加/删除新/现有命令(自定义回复)
- blockchain - 错误:使用 web3.js 为 Binance Smart Chain Ethereum Blockchain 发送交易中的“未知帐户”