首页 > 解决方案 > 命名结构(例如 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

标签: python

解决方案


我会尽力回答。

*args是一个list

**kwargs是一个dict

它们都是一维的。但它们也可以是多维的。比如、、、list of listsdict of lists

Dict允许命名元素。

例如:

a = {'name1': ['a', 'b'], 'name2': ['b', 'c']}

我建议您先在这里阅读有关 python 构建结构的信息 - https://docs.python.org/3/tutorial/datastructures.html

阅读后重新考虑您的问题。

祝你好运!


推荐阅读