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
Deberías leer el tutorial de python y esp. la sección sobre estructuras de datos que también cubre diccionarios.
Esto suena como que la matriz de PHP usando índices nombrados es muy similar a una dict de Python:
shows = [
{"id": 1, "name": "Sesaeme Street"},
{"id": 2, "name": "Dora The Explorer"},
]
Consulte http://docs.python.org/tutorial/datastructures.html#dictionaries para obtener más información al respecto.
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 .