OrderedDict interprétations de la

Puis-je étendre la syntaxe de python pour le dict des compréhensions pour d'autres dicts, comme le OrderedDict dans collections module ou mes propres types qui héritent de dict?

Juste reconsolidation du dict nom de toute évidence ne fonctionne pas, le {key: value} compréhension de la syntaxe encore vous donne un simple vieux dict pour des inclusions et des littéraux.

>>> from collections import OrderedDict
>>> olddict, dict = dict, OrderedDict
>>> {i: i*i for i in range(3)}.__class__
<type 'dict'>

Alors, si c'est possible comment pourrais-je aller sur le faire? C'est OK si il ne fonctionne que dans Disponible. Pour la syntaxe, je suppose que je voudrais l'essayer avec un O{k: v} préfixe comme nous avons sur le r'various' u'string' b'objects'.

remarque: bien sûr, on peut utiliser un générateur d'expression à la place, mais je suis plus intéressé de voir comment piratable python est en termes de grammaire.

  • Par "puis-je étendre la syntaxe", entendez-vous par faire une version personnalisée de Disponible ou PyPy ou quelque chose, ou voulez-vous dire à partir de l'intérieur de la langue?
  • C'est précisément là où je suis un peu largué. Peut-modules cpython être utilisé pour des choses de ce poilu, ou allons-nous obtenir dans la construction-votre-propre-python territoire ici?
  • Vous pouvez étendre la {} syntaxe pour le dictionnaire des inclusions en utilisant le code suivant: stackoverflow.com/a/7880276/313113 et Vous devez ajouter un visit_DictComp() la méthode la DictDisplayTransformer classe. Si vous en avez vraiment besoin 😉
  • Il suffit de déplacer à Python3.6, où les dicts sont commandés.
InformationsquelleAutor wim | 2014-01-13