2016-02-26 2 views
1

Я просмотрел документацию на Python здесь, на namedtuples, и я не могу понять, какие типы легальных данных они могут принять. Или, возможно, это прямо не очевидно для меня.Какие типы данных могут содержать namedtuple в своих полях?

Можно ли сказать, что может быть любые типы данных (например, int, float, string, tuple, list, dict и т. Д.)? Существуют ли типы данных, которые не могут быть вставлены в namedtuple.

Этот вопрос возник из-за моей потребности иметь именованный элемент, который имеет 2 списка. По существу, я пытаюсь сделать это примерно так:

from Collections import namedtuple 

list1 = [23,45,12,67] 
list2 = [76,34,56,23] 

TwoLists = namedtuple("TwoLists", ['x','y']) 
tulist = TwoLists(x=list1, y=list2) 

type(tulist) 
<class '__main__.TwoLists'> 

type(tulist.x) 
<class 'list'> 

print(tulist.x) 
[23,45,12,67] 

print(tulist.y) 
[76,34,56,23] 

И это, кажется, работает, по крайней мере, со списками.

Некоторые быстрые поисковые запросы не привели ни к каким примерам, поэтому я добавил фрагмент кода (из интерактивного режима python) для любого другого, который пытается вставить списки в namedtuple и нуждается в примере.

ответ

0

Если явно не указано, любое Объект Python действителен.

+1

Как бы один явно указать типы данных для 'namedtuple' полей? – Palimondo

1

Вот моя попытка ответить на основании документации:

«Именованные кортежи Назначают смысл каждой позиции в кортеже и позволяют более читаемым, самодокументирован кода Они могут использоваться везде, где используются обычные кортежи. , и они добавляют возможность доступа к полям по имени вместо индекса позиции. " от https://docs.python.org/3/library/collections.html#collections.namedtuple

«Элементы кортежа являются произвольные Python объекты» из https://docs.python.org/3/reference/datamodel.html#objects-values-and-types