【问题标题】:How to get name of a tuple inside of a tuple [duplicate]如何在元组中获取元组的名称[重复]
【发布时间】:2021-07-04 13:17:12
【问题描述】:

假设我有:

a = (1,2,3,4,5)
b = (2,4,5,6,7)
c = (a,b)

其中 a、b 和 c 是元组。如何获得“a”和“b”的名称? 我正在尝试:

for x in c:
    print(type(x).__name__)

但它给了我元组

【问题讨论】:

  • 强制链接到Ned Batchelder
  • 这里有一个微妙的区别。元组没有个名字;它可能有一个(或多个)名称引用它,但对象不跟踪这些名称。
  • 如果你这样做:z = a; c = (a, b)?你认为c 里面的名字是什么?
  • ab 不是赋予元组的名称,而是相反:元组被分配给这些名称。元组本身与这些名称没有任何关系。你可以改用dict 吗?例如:c = {"a": a, "b": b},如果您只需要值,只需使用 c.values()
  • 您的循环将是:for k,v in c: print(k),其中 k 为键(名称),v 为值(本例中为元组)。

标签: python


【解决方案1】:

python-varname 包允许您检查一般的变量名称。也许这会对你有所帮助。您可以通过pip install varname 获得它。它的 GitHub 是 here,那里的 README 提供了使用示例。

编辑:实际上,对于您的用例,@chepner 给出的评论是正确的。我会留下这个答案,以防该包对试图为不同情况获取变量名的人有用,因为它可以用于例如 ab 自己。但是@chepner 准确地解释了为什么从 'c' 中得到 'a' 和 'b' 是不可能的。

【讨论】:

  • 除了是一个糟糕的想法之外,python-varname 实际上并没有像你想象的那样做。它基于 AST 检查,因此您不能执行 for thing in stuff: print(nameof(thing)) 之类的操作并获取列表中事物的“原始”名称。您每次都会收到'thing'
猜你喜欢
  • 2019-10-26
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 2021-09-23
  • 2016-08-09
  • 1970-01-01
相关资源
最近更新 更多