library how python arrays

how - Python: ¿puedo tener una lista con índices nombrados?



plotly python (10)

En PHP puedo nombrar mis indices de matriz para que pueda tener algo como:

$shows = Array(0 => Array(''id'' => 1, ''name'' => ''Sesaeme Street''), 1 => Array(''id'' => 2, ''name'' => ''Dora The Explorer''));

¿Es esto posible en Python?


@Unkwntech,

Lo que quiere está disponible en el recién lanzado Python 2.6 en forma de tuplas con nombre . Ellos te permiten hacer esto:

import collections person = collections.namedtuple(''Person'', ''id name age'') me = person(id=1, age=1e15, name=''Dan'') you = person(2, ''Somebody'', 31.4159) assert me.age == me[2] # can access fields by either name or position




No es exactamente la misma sintaxis, pero hay una serie de extensiones de diccionario que respetan el orden en el que se han agregado los pares clave / valor. Por ejemplo, seqdict .


Para ayudar a Google en el futuro, generalmente se denominan matrices asociativas en PHP y diccionarios en Python.


Python tiene listas y dictados como 2 estructuras de datos separadas. PHP mezcla ambos en uno. Deberías usar dicts en este caso.


Sí,

a = {"id": 1, "name":"Sesame Street"}


Lo hice así:

def MyStruct(item1=0, item2=0, item3=0): """Return a new Position tuple.""" class MyStruct(tuple): @property def item1(self): return self[0] @property def item2(self): return self[1] @property def item3(self): return self[2] try: # case where first argument a 3-tuple return MyStruct(item1) except: return MyStruct((item1, item2, item3))

Lo hice también un poco más complicado con la lista en lugar de la tupla, pero había anulado tanto al setter como al getter.

De todos modos, esto permite:

a = MyStruct(1,2,3) print a[0]==a.item1


Los arrays de PHP son en realidad mapas, lo que equivale a dicts en Python.

Por lo tanto, este es el equivalente de Python:

showlist = [{''id'':1, ''name'':''Sesaeme Street''}, {''id'':2, ''name'':''Dora the Explorer''}]

Ejemplo de clasificación:

from operator import attrgetter showlist.sort(key=attrgetter(''id''))

¡PERO! Con el ejemplo que proporcionó, una estructura de datos más simple sería mejor:

shows = {1: ''Sesaeme Street'', 2:''Dora the Explorer''}


La biblioteca de pandas tiene una solución realmente buena: Series .

book = pandas.Series( [''Introduction to python'', ''Someone'', 359, 10], index=[''Title'', ''Author'', ''Number of pages'', ''Price'']) print book[''Author'']

Para obtener más información, consulte su documentación: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html .