IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaçage autre langage Python Discussion :

modifier le type dict


Sujet :

Interfaçage autre langage Python

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut modifier le type dict
    bonsoir,

    le dictionnaire par défaut de python propose un mapping d'un objet hashable vers un autre objet.

    est il possible de définir un type de mapping d'un entier vers un réel par exemple sans avoir à recoder toutes les méthodes des dictionnaires ?

    en terme d'interfaçage, j'ai surtout utilisé cython et je ne vois pas de façon de faire avec.

    en passant par l'api c il y a un espoir que je puisse y arriver ? c'est un sujet que je maitrise assez mal et je n'arrive pas à trouver d'info sur le net sur ce que je veux faire.

    pour ne pas qu'il y ait de confusion, je ne cherche pas à substituer le type dict par défaut par un autre, je cherche juste à créer un type d'extension.

    merci pour votre aide

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Si tu veux simplement faire une "hash table" avec pour clé un entier (int) et pour valeur un réel (float), tu peux utiliser un dictionnaire natif.

    Il faut savoir qu'un int ou un float est un objet comme un autre en python (tout est objet en python) .

    En partant de ce fait, le mécanisme des dictionnaires utilisent la méthode __hash__ d'un objet utilisé comme clé pour l'identifier/comparer .

    Et les types (d'objets) int et float possèdent bien la méthode __hash__, et sont donc utilisables comme clé dans un dictionnaire.

    Tu peux toujours faire ton propre système de "hash table" entier->réel mais je pense que ça restera moins performant qu'un dictionnaire classique.

    A noter aussi que tu peux utiliser le module UserDict pour créer tes propres dictionnaires dérivés de "dict" .

    Note : j'espère que je n'étais pas trop hors sujet

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    Bonjour,

    Merci pour ta réponse.

    Qu'est ce qu'un "dictionnaire natif" pour toi ?

    Justement, je ne veux pas dériver de dict. L'idée est en fait d'utiliser une table de hash avec des clés et des valeurs typé statiquement pour limiter la consommation mémoire d'un dictionnaire.

    Mais je ne veux pour autant pas réinventer la poudre, c'est pourquoi je demande s'il n'est pas possible de partir du code C interne à Python et en faire une "copie" typé statiquement.

    Je pourrais très bien utiliser une classe c++ avec template et faire un interfaçage swig mais je me dis qu'il y a peut être un moyen plus direct...

    A ma connaissance numpy ne propose pas de type "mapping" typé statiquement ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Points : 329
    Points
    329
    Par défaut
    Tu peux tout à fait créer des nouveaux types en python (ce qui équivaut à réinventer la roue) mais il faut savoir que le type dict en python est implémenté en C et est donc assez rapide et efficace et surtout maintenu et corrigé par la communauté des développeurs de la STL python.

    Si tu veux voir comment est codé le type dict, télécharge les sources de python et regarde les fichiers :
    Python-xxx/Objects/dictobject.h et Python-xxx/Objects/dictobject.c

    Après tu peux aussi regarder du côté de ctypes qui permet de coder avec des bibliothèques C en python.

    Sinon un "dictionnaire natif" pour moi c'est le type dict de python implémenté en C et intégré dans la STL de python.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    Citation Envoyé par tamiel Voir le message
    il faut savoir que le type dict en python est implémenté en C et est donc assez rapide et efficace et surtout maintenu et corrigé par la communauté des développeurs de la STL python.
    j'en suis tout à fait conscient, je ne remets pas en cause le type dict qui est fourni dans la librairie standard.

    je vais aller regarder dans les sources C comme tu me l'indiques

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier le type d'un champs
    Par xopos dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 16/12/2008, 15h09
  2. [C#]Modifier le type d'une colonne dans un datatable
    Par Mahoret dans le forum Windows Forms
    Réponses: 2
    Dernier message: 26/09/2006, 09h03
  3. Modifier le type d'un champ
    Par hannii dans le forum Access
    Réponses: 8
    Dernier message: 01/09/2006, 15h51
  4. [modifier un type]
    Par viny dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/03/2005, 14h34
  5. Modifier un type défini par l'utilisateur
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2004, 12h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo