Pythonic Moyen de Convertir Dictionnaire namedtuple, ou un Autre Hashable dict-like?

J'ai un dictionnaire comme:

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

que je voudrais convertir en namedtuple.
Ma démarche actuelle est, avec le code suivant

namedTupleConstructor = namedtuple('myNamedTuple', ' '.join(sorted(d.keys())))
nt= namedTupleConstructor(**d)

qui produit

myNamedTuple(a=1, b=2, c=3, d=4)

Cela fonctionne très bien pour moi (je pense), mais je manque un intégré tel que...

nt = namedtuple.from_dict() ?

Mise à JOUR: comme expliqué dans les commentaires, ma raison de vouloir convertir mon dictionnaire à un namedtuple est de sorte qu'il devient hashable, mais encore utilisable d'une manière générale comme un dict.

  • Selon la documentation, il n'y a pas un moyen plus court. Cependant, vous pouvez étendre la classe et de mettre en œuvre la méthode.
  • Avec namedtuples, vous êtes censé créer de la namedtuple type une fois et l'utiliser à plusieurs reprises, de ne pas générer un nouveau namedtuple taper à chaque fois. La génération d'une nouvelle namedtuple type de tous les temps est lent et l'emporte sur tout l'espace de prestations.
  • sans doute, l'utilisateur dispose de nombreuses dicts avec les mêmes touches.
  • Il ne va pas être intégré dans des constructions du type et de la n-uplet dans le même temps, parce que vous êtes censé pour réutiliser le type.
  • Totalement d'accord avec @user2357112. La définition d'un nommé tuple du dictionnaire est un one-liner, nt= namedTupleConstructor(**d). La première ligne est la définition d'une nouvelle classe, qui est censé être ré-utilisé.
InformationsquelleAutor Max Power | 2017-05-11