【问题标题】:How to get the name of a nested list? [duplicate]如何获取嵌套列表的名称? [复制]
【发布时间】:2021-10-25 21:05:40
【问题描述】:

我想知道这样的事情是否可行。让我们假设这段代码的 sn-p:

area = ["A","B","C"]
level = ["L1","L2","L3"]

sector = [area, level]

print(sector)

print(sector[1])

输出:

  • 打印 1:[['A', 'B', 'C'], ['L1', 'L2', 'L3']]
  • 打印 2:['L1', 'L2', 'L3']

第一次打印对我来说没问题。它显示列表及其元素。

但是,对于第二次打印,我希望使用 列表的名称 而不是其元素。在这种情况下级别

这可能吗?

【问题讨论】:

  • 列表的名称是什么?
  • 不,这是不可能的。见stackoverflow.com/questions/1538342/…
  • 我不认为这对一开始就真的有用,如果你想将一些变量映射到一个“名称”,我会考虑使用字典
  • 名称只是对象的名称。该对象不知道并且可以有多个名称。该列表包含的对象可能在其他地方也有名称,也可能没有。为什么需要这个?
  • 您不了解名称和值在 Python 中的工作原理。见Facts and myths about Python names and values

标签: python list


【解决方案1】:

你可以做的是使用字典:

di = {"area": ["A", "B", "C"], "level": ["L1", "L2", "L3"]}

di["area"]  

输出:

["A", "B", "C"]

【讨论】:

  • 感谢 Odhian。正如我所说,我是 Python 新手,我不知道这种结构。很有用
【解决方案2】:

你可以比较id:

for sec in sector:
    if id(sec) == id(area):
        print('area')
    elif id(sec) == id(level):
        print('level')
    

等等

但是,这是一个可疑的方法。为什么需要这个?

【讨论】:

  • 这是客户的要求。但鉴于我现在的知识有限,我想在回答之前先确定一下。感谢您的帮助。
  • 我会质疑为什么客户需要这个。它在 Python 中不容易得到支持,而且确实表明它构思不周。见What is the XY problem?
【解决方案3】:

将其变成列表字典而不是列表列表:

area = ["A","B","C"]
level = ["L1","L2","L3"]

sectors = {
    "area":  area,
    "level": level
}

print(sectors["level"])
print(sectors["area"])

""" some other useful dict methods below """

print(sectors.keys())
print(sectors.values())
print(sectors.items())

【讨论】:

  • 谢谢乔。你的例子非常有用。我学到了一些关于 Python 的新知识。
【解决方案4】:

您可以为您的用例使用字典。

您可以将变量的名称作为键,将列表作为值。

试试这个:

area = ["A","B","C"]
level = ["L1","L2","L3"]

sector = {"area":area, "level":level}

print(list(sector.values()))

print(list(sector.keys()))

输出:

[['A', 'B', 'C'], ['L1', 'L2', 'L3']]

['area', 'level']

【讨论】:

  • 谢谢普拉尚特。正如我所说,我是 Python 新手,我不知道这种结构。很有用
猜你喜欢
  • 2012-01-09
  • 1970-01-01
  • 2013-06-18
  • 1970-01-01
  • 2021-10-20
  • 1970-01-01
  • 2017-04-11
  • 1970-01-01
相关资源
最近更新 更多