web-dev-qa-db-fra.com

Python: puis-je avoir une liste avec des indices nommés?

Dans PHP je peux nommer mes indices de tableau afin que je puisse avoir quelque chose comme:

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

Est-ce possible en Python?

35
UnkwnTech

Cela ressemble au tableau PHP utilisant des indices nommés est très similaire à un dict python:

shows = [
  {"id": 1, "name": "Sesaeme Street"},
  {"id": 2, "name": "Dora The Explorer"},
]

Voir http://docs.python.org/tutorial/datastructures.html#dictionaries pour plus d'informations à ce sujet.

51
Michael Twomey

Les tableaux PHP sont en fait des cartes, ce qui équivaut à des dicts en Python.

Ainsi, c'est l'équivalent Python:

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

Exemple de tri:

from operator import attrgetter

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

MAIS! Avec l'exemple que vous avez fourni, une infrastructure de données plus simple serait préférable:

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

@Unkwntech,

Ce que vous voulez est disponible dans la version Python 2.6 sous la forme nommée tuples . Ils vous permettent de faire ceci:

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
16
Dan Lenski

Pour aider Google à l'avenir, ceux-ci sont généralement appelés tableaux associatifs en PHP et dictionnaires en Python.

9
Steve Klabnik

Oui,

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

La bibliothèque pandas a une solution vraiment intéressante: Series.

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

Pour plus d'informations, consultez sa documentation: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html .

2
Sreekanth

Vous devriez lire le tutoriel python et esp. la section sur datastructures qui couvre également dictionnaires.

2
André

Pas exactement la même syntaxe, mais il existe un certain nombre d'extensions de dictionnaire qui respectent l'ordre dans lequel les paires clé/valeur ont été ajoutées. Par exemple. seqdict .

1
Alex Coventry

Python a des listes et des dict en tant que 2 structures de données distinctes. PHP mélange les deux en un. Vous devez utiliser des dict dans ce cas.

0
Rory