Получить имя списка

Я не уверен, что это возможно простым способом, но я пытаюсь получить имя объекта списка.

Я попытался с __name__ но я получаю сообщение об ошибке, потому что объект списка не имеет атрибута __name__

Возможно даже получить имя переменной для списка, без подкласса объекта списка и добавить атрибут __name__ ?

EDIT Это не имеет ничего общего с предлагаемым дубликатом.

Это мой сценарий:

 cucumbers=[] oranges=[] salads=[] ... masterlist=[cucumbers, oranges, salads] 

Время от времени я просто получаю 2 списка, в то время как я получаю 5, поэтому у главного списка есть разное количество списков в нем каждый раз; и когда я его печатаю, я получаю только значения; поэтому я не знаю, является ли первый список огурцами, апельсинами, салатами или чем бы то ни было.

Я пытаюсь запросить список, чтобы получить variable name , а не тип объекта. поэтому print masterlist[1].name даст мне «огурцы» или что-то print masterlist[1].name имени, связанного с этим списком.

2 Solutions collect form web for “Получить имя списка”

Вместо этого вы можете просто использовать словарь:

 masterdict={'cucumbers': cucumbers, 'oranges': oranges, 'salads': salads} 

И вместо того, чтобы проверять имя, вы перебираете элементы словаря:

 for name, sublist in masterdict.items(): print(name, sublist) 

Если вы хотите, чтобы он был заказан (и у вас нет Python 3.6, где dict s), есть collections.OrderedDict .


Проблема с получением имени для переменной заключается в том, что переменные ссылаются на объекты python, но может быть много (иначе названных) переменных, ссылающихся на один и тот же объект. Также объекту не требуется (видимое) имя для существования. Например, если у вас есть что-то вроде:

 def func(): cucumber = [1, 2, 3] return [cucumber] 

Тогда имя cucumber больше не существует, когда функция закончена. Но объект (список [1, 2, 3] ) по-прежнему существует, но поскольку он был завернут в другой список, у него больше нет «имени». Только внешний список может иметь имя, когда возвращаемое значение было сохранено в переменной.

Определите 3 списка и поместите их в больший список:

 In [1]: x = [1,2,3] In [2]: y = ['a','b','c'] In [3]: z = [] In [4]: alist = [x, y, z] 

отобразите более крупный список:

 In [5]: alist Out[5]: [[1, 2, 3], ['a', 'b', 'c'], []] 

посмотрите на элемент этого списка:

 In [7]: alist[0] Out[7]: [1, 2, 3] 

alist содержит указатели на другие объекты списка, которые мы можем проверить, посмотрев id :

 In [8]: id(alist[0]) Out[8]: 2895592076 In [9]: id(x) Out[9]: 2895592076 

Но, учитывая id , нет простого способа найти все переменные, указывающие на этот объект.

Важно помнить, что существует разница между переменной x , ее именем и объектом, с которым он ссылается.

Я мог бы назначить другую переменную для указания на объект списка:

 In [10]: x1 = x In [11]: id(x1) Out[11]: 2895592076 

Я мог бы также поместить эти списки в словарь:

 In [12]: dd = {'x': x, 'y1': y, 'zfoo': z} In [13]: dd Out[13]: {'x': [1, 2, 3], 'y1': ['a', 'b', 'c'], 'zfoo': []} In [14]: id(dd['x']) Out[14]: 2895592076 

Обратите внимание, что имя или ключ в словаре не должны совпадать с именем в глобальном пространстве имен.

В смысле только потому, что я построил alist с [x, y, z] , не означает, что Python сохраняет запись этого утверждения. alist содержит указатели на объекты, на которые ссылаются x , y и z , но не сохраняет записи имен переменных, которые были использованы в этом выражении.

Так что я думаю, что вы просите, нереально в Python.


Переключение x , y ссылок без изменения alist :

 In [15]: x, y = y, x In [16]: alist Out[16]: [[1, 2, 3], ['a', 'b', 'c'], []] In [17]: x Out[17]: ['a', 'b', 'c'] In [18]: x1 # x and x1 no longer point to the same object Out[18]: [1, 2, 3] 
  • Самый распространенный элемент Python в списке
  • Какой самый питоновский способ идентифицировать последовательные дубликаты в списке?
  • Добавление нескольких элементов в список в Python
  • Список наследующих: создание разделов по другим спискам, целым числам и поплавкам
  • Найти, если значение существует в нескольких списках
  • TypeError: только целые массивы с одним элементом могут быть преобразованы в индекс 3
  • разделять элементы в списке
  • Преобразование списка Python
  • Список пифонических кругов
  • Заполнение списка определенным образом
  • Список, расширяющий странное поведение
  • Python - лучший язык программирования в мире.