python. récupérer une lettre dans une clé de dictionnaire
Répondre à la discussion
Affichage des résultats 1 à 29 sur 29

python. récupérer une lettre dans une clé de dictionnaire



  1. #1
    frequi1

    python. récupérer une lettre dans une clé de dictionnaire


    ------

    Bonjour,

    J'aimerais savoir comment récupérer la première lettre d'une clé de dictionnaire:

    Par exemple:
    Code:
    liste_mois = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                  'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']
    liste_indice = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
    
    for i in range(len(liste_indice)):
        date[liste_mois[i]] = liste_indice[i]
    Mon dictionnaire est créer à partir des deux listes
    Je voudrais récupérer la première lettre de toutes les keys afin de savoir si c'est une consonne ou une voyelle.
    Merci.

    -----

  2. #2
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Code:
    [k[0] for k in d.keys()]
    Où d est le dictionnaire.

  3. #3
    polo974

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Accessoirement, tu peux créer ton dico à partir de listes de façon plus "sexy":
    Code:
    liste_mois = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
                  'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']
    liste_indice = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
    
    mon_dico = dict (zip (liste_mois, liste_indice))
    Jusqu'ici tout va bien...

  4. #4
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    D'autant plus que dans l'exemple qu'il a donné, il n'y a pas de dictionnaire, ou plutôt il n'est pas initialisé.
    Dernière modification par pm42 ; 19/07/2022 à 19h55.

  5. A voir en vidéo sur Futura
  6. #5
    frequi1

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par pm42 Voir le message
    Code:
    [k[0] for k in d.keys()]
    Où d est le dictionnaire.
    Super merci
    Dernière modification par frequi1 ; 20/07/2022 à 08h37.

  7. #6
    frequi1

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par pm42 Voir le message
    D'autant plus que dans l'exemple qu'il a donné, il n'y a pas de dictionnaire, ou plutôt il n'est pas initialisé.
    "date" c'est pas un dictionnaire ?

  8. #7
    CM63

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par frequi1 Voir le message
    "date" c'est pas un dictionnaire ?
    Il n'est pas initialisé.
    Quoi? Quelque chose que je ne connais pas et qui me fait l'affront d'exister?!

  9. #8
    oxycryo

    Re : python. récupérer une lettre dans une clé de dictionnaire

    là tu a écrit deux liste python ["", "", ""] (liste de str)

    un dic python à cette forme {"manger" : "pizza", "boire" : "badoit" } dic de str

    et tu comme te l'a montré PM42, pas besoin de la seconde liste avec les indices [1, 2, 3...ect] car les items de ta première liste sont "indexés" et le premier item vaux toujours [0] (ce qui est une source notoire de désordre et de bug, même après des années) surtout à cause des indices
    - ceux qui sont de cette forme aa[8] se base sur un index partant de 0
    - ceux de la forme [4:8] ou [:8] ou [4:] se base sur un index partant de 1

    c'est très amusant de rechercher ce genre de pécadille désastreuse dans un code censé ne pas avoir ce genre de pécadille ou point-virgule désastreux

  10. #9
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par oxycryo Voir le message
    - ceux qui sont de cette forme aa[8] se base sur un index partant de 0
    - ceux de la forme [4:8] ou [:8] ou [4:] se base sur un index partant de 1
    Tu peux préciser ?

    Parce que si je fais :
    Code:
    l=list(range(10))
    l[4]
    j'ai bien 4 comme on s'y attend.

    Et si je fais ensuite :
    Code:
    l[4:8]
    J'ai bien [4, 5, 6, 7] donc on commence au même endroit.

  11. #10
    umfred

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Pour initialiser le dico date, il manque date={} avant la boucle (mais c'est peut-être fait dans le code non montré)

    Les indices partent toujours de 0 pour les listes, la forme [4:8] est plus généralement [start:fin:step] donc ressort les éléments à partir de l'indice start jusqu'à fin (exclu) par pas de step (par défaut 1)

  12. #11
    frequi1

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par umfred Voir le message
    Pour initialiser le dico date, il manque date={} avant la boucle (mais c'est peut-être fait dans le code non montré)
    Code:
    date = {}
    for i in range(len(liste_indice)):
        date[liste_mois[i]] = liste_indice[i]
    oui c'est vrai il était juste au dessus. Pas compris pourquoi il n'apparait pas dans le premier post

    Merci
    Dernière modification par frequi1 ; 20/07/2022 à 12h09.

  13. #12
    oxycryo

    Re : python. récupérer une lettre dans une clé de dictionnaire

    je sens que tu vas bien t'amuser en python et en informatique PM42... bienvenue !

    vu que tu compte comme un informaticien à partir de zéro, range(10), et non comme le commun des mortels qui compte à partir de 1, range(1,11)

    vu que l[4] est le 5ème item de ton range(10) et que l[10]=9

    ce qui change en utilisant les indices avec ":"

    le truc c'est qu'en utilisant range tu génère une suite de nombre qui colle avec la règle informatique, mais pas avec l'ordre usuel de décompte humain, ou le zéro n'est pas le premier élément (comptons-nous tous avec les ordinaux, ou le zéroïème item (état de départ, n'existe pas (rien ne venant avant la première position)

    ton exemple est précisément ce dont quoi il faut ce méfier, dans les indices de liste, puisqu'il me semble qu'en informatique zéro est le premier élément, il compte comme une unité pleine..

    delà qu'entre les indices avec où sans ":" l'on en viens aisément à s'arracher les cheveux quant tout roule, mais ne donne pas le résultat attendu.

  14. #13
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par oxycryo Voir le message
    et non comme le commun des mortels qui compte à partir de 1, range(1,11)
    Absolument pas. Il n'y a pas de règle et par exemple, pour les étages, on compte à partir du 0. L'étage 1 n'est pas le rez de chaussée.
    Idem pour les distances à partir d'un point comme les bornes kilométriques, etc.

    Citation Envoyé par oxycryo Voir le message
    vu que l[4] est le 5ème item de ton range(10) et que l[10]=9
    Faux encore. L[10] n'existe pas. C'est l[9] qui est égal à 9.

    Citation Envoyé par oxycryo Voir le message
    ce qui change en utilisant les indices avec ":"
    Non plus comme indiqué plus haut.

    Outre les affirmations gratuites et fausses qu'on pourrait s'éviter, la moindre des choses serait de lire les réponses et de tester ce qu'on écrit dans un interpréteur.
    Cela éviterait d'écrire des trucs avec des indices invalides à l'appui d'une erreur monumentale.
    Dernière modification par pm42 ; 21/07/2022 à 14h47.

  15. #14
    JPL
    Responsable des forums

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par pm42 Voir le message
    Absolument pas. Il n'y a pas de règle et par exemple, pour les étages, on compte à partir du 0. L'étage 1 n'est pas le rez de chaussée.
    Sauf en Angleterre et probablement aux US ou le rez-de-chaussée est first floor.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  16. #15
    umfred

    Re : python. récupérer une lettre dans une clé de dictionnaire

    dans mon interpréteur python:
    Code:
    >>> for i in range(1,10):
    ...     print(i)
    ...
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> l=[]
    >>> for i in range(1,10):
    ...  l.append(i)
    ...
    >>> l
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    >>> l[0]
    1
    >>> l[10]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    >>> l[1:5]
    [2, 3, 4, 5]
    >>> l[1:]
    [2, 3, 4, 5, 6, 7, 8, 9]
    >>> l[:5]
    [1, 2, 3, 4, 5]
    >>> l[::2]
    [1, 3, 5, 7, 9]
    >>> l[1::2]
    [2, 4, 6, 8]
    Dernière modification par umfred ; 21/07/2022 à 19h21.

  17. #16
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par JPL Voir le message
    Sauf en Angleterre et probablement aux US ou le rez-de-chaussée est first floor.
    En Angleterre, c'est le Ground Floor : https://grammar.collinsdictionary.co...nd-first-floor

    Mais où on compte comme ici les altitudes à partir de 0 aussi. Bref, question de convention mais surtout et contrairement à ce qu'il a affirmé 2 fois, il n'y a pas de différence en Python entre les indices d'une liste simple et ceux avec un : entre.
    Dernière modification par pm42 ; 21/07/2022 à 19h32.

  18. #17
    JPL
    Responsable des forums

    Re : python. récupérer une lettre dans une clé de dictionnaire

    First floor date de l’époque lointaine où j’ai appris l’anglais. Autrement dit, je date
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  19. #18
    polo974

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par JPL Voir le message
    Sauf en Angleterre et probablement aux US ou le rez-de-chaussée est first floor.
    Alors dans leurs ascenseurs, ils ont aussi le bug de l'an zéro???

    (Pas de zéro, ce qui fait que la distance entre "1" et "-1" est 1 et non 2.)

    Ahhhh, les anglo-saxons...


    Sinon, oxycryo, il faut réviser ton python, car un range (écriture avec : ) ne rend pas un élément mais une liste (même s'il n'y a qu'un élément dedans. Mais commençant toujours avec l'indice 0

    Pour les langages où les indices qui commencent à 1:
    https://iq.opengenus.org/array-indices-start-from-1/

    Mais perso, j'aime bien le C où on peut avoir des indices négatifs sans le bug de l'an zéro...
    L'indice négatif en python a un autre sens: on part de la fin de la liste.
    Bref, ce sont des conventions, et il faut faire avec.
    Dernière modification par polo974 ; 21/07/2022 à 20h03.
    Jusqu'ici tout va bien...

  20. #19
    umfred

    Re : python. récupérer une lettre dans une clé de dictionnaire

    [HS] et il n'y a pas de 13ème étage aux USA (à New York en particulier) ou alors il est nommé 14ème ou M (13ème lettre) ou 12a/b); quoiqu'il semble réapparaitre dans les nouveaux immeubles[/HS]

  21. #20
    oxycryo

    Re : python. récupérer une lettre dans une clé de dictionnaire

    @PM42

    P'tain, tu ne maitrise même pas le problème des indices ? mais qu'est-ce que tu fais ici ?

    tu arrives à comprendre le problème au moins ? réfléchi un peu avant de répondre... n'importe quoi ?

    0 n'est pas et ne seras jamais le premier chiffre d'une suite ordonnée, car zero n'est pas un nombre (quantité nulle) c'est un marqueur de position comme dans 10.

    et personne ne débute un décompte en partant de 0 (pour la raison vu plus haut)... "tout le monde" débute un décompte à 1 puis 2 puis 3 ect...

    comment peux-tu, juste par un orgueil fort mal placé vouloir démonter l'inverse...

    c'est un vieux sujet que ce fameux indice[0] en informatique, même guido von Rossum c'est enquit du problème pour savoir s'il devait conserver cette numération non-conforme

    donc faire reposer ton raisonnement sur le range(10) de python, n'est qu'une manière fort tautologique de démontrer quelquechose de faux avec un raisonnement érroné

    mais puisqu'il faut en revenir aux fondamentaux...
    soit
    aa=['A', 'B', 'C'] quel est aa[3] ?
    et aa[:3] = ??

    bonne journée (lol)

  22. #21
    JPL
    Responsable des forums

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Justement 0 dans une boucle ou un tableau n’est pas un décompte, c’est un rang. Je crois que tu as été très discourtois à tort.
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  23. #22
    polo974

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par oxycryo Voir le message
    ...

    comment peux-tu, juste par un orgueil fort mal placé vouloir démonter l'inverse...

    ...
    bonne journée (lol)
    heu, là, comme ça, cette phrase s'applique très bien à ce que tu fais dans ce fil.

    0 est un nombre, c'est d'ailleurs le premier dans N, en tant qu'ensemble ordonné.
    Jusqu'ici tout va bien...

  24. #23
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Mais surtout au delà de ces débats anecdotiques, tout ce qu’il dit à propos de Python est faux, les exemples qu’il donne ne marchent pas, etc.
    C’est surtout cela qui est gênant, le reste c’est du troll et du DK de base comme il y en a tant.

  25. #24
    Paraboloide_Hyperbolique

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Bonjour oxycryo

    Citation Envoyé par oxycryo Voir le message
    mais puisqu'il faut en revenir aux fondamentaux...
    soit
    aa=['A', 'B', 'C'] quel est aa[3] ?
    et aa[:3] = ??
    Avez-vous essayé ce code ? Moi oui et j'obtiens:

    Code:
    >>> aa[3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    Ce que vous dites sur les numérotations des listes en python est faux. C'est bien pm42 qui a raison.

  26. #25
    umfred

    Re : python. récupérer une lettre dans une clé de dictionnaire

    je vais un peu plus loin
    Code:
    >>> aa=['A', 'B', 'C']
    >>> aa[3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list index out of range
    >>> aa[:3]
    ['A', 'B', 'C']
    >>> aa[:6]
    ['A', 'B', 'C']
    >>> aa[0:6]
    ['A', 'B', 'C']
    >>>>>> aa[1:6]
    ['B', 'C']
    >>>
    On peut en déduire que aa[:6] veut dire prend les éléments de aa jusqu'à l'indice 6-1 (si possible)

  27. #26
    Paraboloide_Hyperbolique

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par umfred Voir le message
    On peut en déduire que aa[:6] veut dire prend les éléments de aa jusqu'à l'indice 6-1 (si possible)
    Tiens, je ne connaissais pas cette particularité de Python. Comme quoi, on en apprend tous les jours.

    Je trouve cependant qu'il peut être dangereux d'autoriser un tel comportement: un raisonnement foireux sur les indices d'une liste pourrait conduire à un comportement qui ne plante pas et faire croire que tout fonctionne comme attendu.

  28. #27
    pm42

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Citation Envoyé par Paraboloide_Hyperbolique Voir le message
    Je trouve cependant qu'il peut être dangereux d'autoriser un tel comportement
    En fait non parce que c'est très cohérent.
    Si tu as une liste l avec 10 éléments :
    l[n] renvoie le nième, classique

    n[a:b] renvoie les éléments dans l'intervalle [a,b[ (ici, les [ sont à prendre au sens mathématique)
    Et tu as 2 abréviations :

    n[a:] renvoie les éléments dans l'intervalle [a:+infini ou longueur de la liste[
    n[:b] renvoie les éléments dans l'intervalle [0:b[

    C'est ce qui fait le succès de python pour certains usages : on a pas mal de raccourcis comme ça qui simplifie l'écriture du code (on peut discuter des avantages/inconvénients de cette approche mais ce n'est pas le lieu).

  29. #28
    polo974

    Re : python. récupérer une lettre dans une clé de dictionnaire

    Et encore, on n'a pas parlé du troisième larron d'une plage:

    lst[2:10:3] correspond à du 2ème au 10ème exclu au pas de 3 (donc les éléments d'ndice 2,5,8

    Mais c'est pas tout, le pas peut être négatif, donc on part de la fin (dernier exclus):

    lst[2:10:-3] correspond à ... (je vous laisse faire le test ...)
    Jusqu'ici tout va bien...

  30. #29
    umfred

    Re : python. récupérer une lettre dans une clé de dictionnaire

    j'avais évoqué le step en #10 (sans trop rentré dans les détails)

Discussions similaires

  1. Python : Tkinter : tag et dictionnaire
    Par invitec03183ff dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 08/01/2019, 15h08
  2. [PYTHON] dictionnaire de liste, tous les assemblages
    Par DavianThule95 dans le forum Programmation et langages, Algorithmique
    Réponses: 14
    Dernier message: 02/07/2017, 11h24
  3. Python : Inversion dictionnaire
    Par invite452e493b dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 04/04/2016, 13h06
  4. Python : tracer l'histogramme d'un dictionnaire
    Par inviteb5d32459 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 30/03/2016, 10h36
  5. python POO - dictionnaire
    Par invite2ace8786 dans le forum Électronique
    Réponses: 1
    Dernier message: 16/06/2009, 12h12