Python: Kann ich eine Liste mit benannten Indizes haben?


4 Answers

PHP-Arrays sind eigentlich Maps, das entspricht Dicts in Python.

Das ist also das Python-Äquivalent:

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

Sortierungsbeispiel:

from operator import attrgetter

showlist.sort(key=attrgetter('id'))

ABER! Mit dem von Ihnen angegebenen Beispiel wäre eine einfachere Datenstruktur besser:

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

In PHP kann ich meine Array-Indizes benennen, damit ich Folgendes habe:

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

Ist das in Python möglich?




Ja,

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






Ich habe es so gemacht:

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))

Ich habe es auch ein bisschen komplizierter mit Liste anstelle von Tupel gemacht, aber ich hatte den Setter sowie den Getter außer Kraft gesetzt.

Sowieso erlaubt das:

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








Related