В PHP я могу назвать свои индексы массива так, чтобы у меня могло быть что-то как:
$shows = Array(0 => Array('id' => 1, 'name' => 'Sesame Street'),
1 => Array('id' => 2, 'name' => 'Dora The Explorer'));
Действительно ли это возможно в Python?
Это кажется, что массив PHP с помощью названный индексами очень похож на Python dict:
shows = [
{"id": 1, "name": "Sesaeme Street"},
{"id": 2, "name": "Dora The Explorer"},
]
См. http://docs.python.org/tutorial/datastructures.html#dictionaries для больше на этом.
Массивы PHP являются на самом деле картами, который эквивалентен dicts в Python.
Таким образом, это - эквивалентный Python:
showlist = [{'id':1, 'name':'Sesaeme Street'}, {'id':2, 'name':'Dora the Explorer'}]
пример Сортировки:
from operator import attrgetter
showlist.sort(key=attrgetter('id'))
, НО! С примером Вы, если, более простой datastructure был бы лучше:
shows = {1: 'Sesaeme Street', 2:'Dora the Explorer'}
@Unkwntech,
, Что Вы хотите, доступен в просто выпущенном Python 2.6 в форме именованные кортежи . Они позволяют Вам делать это:
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
Для помощи будущему Гуглению их обычно называют ассоциативными массивами в PHP и словарями в Python.
Да,
a = {"id": 1, "name":"Sesame Street"}
Необходимо читать учебное руководство по Python и особенно раздел [приблизительно 111] datastructures, который также покрывает словари.
Не точно тот же синтаксис, но существует много расширений словаря там, которые уважают порядок, в котором были добавлены пары ключ/значение. Например, seqdict.
Python имеет списки и указания как две отдельные структуры данных. PHP смешивает оба в один. Вы должны использовать dicts в этом случае.
Я сделал это как это:
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))
я сделал это, также немного больше усложняет со списком вместо кортежа, но я имел, переопределяют метод set, а также метода get.
Так или иначе это позволяет:
a = MyStruct(1,2,3)
print a[0]==a.item1