Ce serait l'exercice sur lequel je travaille actuellement: Ecrire une fonction distinct_characters qui obtient une liste de chaînes comme paramètre. Il doit renvoyer un dictionnaire dont les clés sont les chaînes de la liste d'entrée et les valeurs correspondantes sont les nombres de caractères distincts dans la clé.

Solution: {"check": 4, "look": 3, "try": 3, "pop": 2}

Mon code:

    def distinct_characters(l):
            dictOfWords = {i: 5 for i in l}
            for key in dictOfWords:
            keys = (len(set(key[0:len(dictOfWords)])))
         print(dictOfWords)

    distinct_characters(["check", "look", "try", "pop", "obo", "hehe"])

Résultat: {'check': 5, 'look': 5, 'try': 5, 'pop': 5, 'obo': 5, 'hehe': 5}

J'ai essayé la boucle for sans utiliser de clé mais je ne renvoie pas le format habituel d'un dictionnaire

    def distinct_characters(l):
         dictOfWords = {i: 5 for i in l}
         for i in dictOfWords:
            print(len(set(i[0:len(dictOfWords)])), i, end=" ")

distinct_characters(["check", "look", "try", "pop", "obo", "hehe"])

Résultat: 4 check 3 look 3 try 2 pop 2 obo 2 hehe

0
Sani 5 juin 2020 à 01:46

3 réponses

Meilleure réponse

Une chose à noter: vous ne modifiez jamais votre dictOfWords d'origine après l'avoir créé. De plus, lorsque vous créez le dictionnaire, vous attribuez une valeur de 5 à chaque mot qui sert de clé.

Vous pouvez accomplir cela de manière pythonique en utilisant des compréhensions de dict comme ceci:

def disctinct_characters(listofwords):
    return {word: len(set(word)) for word in listofwords}

0
Dhruv Pillai 4 juin 2020 à 23:04

L'extrait de code suivant devrait fonctionner.

from collections import defaultdict

def distinct_characters(l):
    result = {}
    for each in l:
        temp = defaultdict(int)
        for char in each:
            temp[char] += 1
        result[each] = len(temp)

    return result

print(distinct_characters(["check", "look", "try", "pop", "obo", "hehe"]))

J'ai utilisé defaultdict pour éviter l'erreur de clé. Fondamentalement, c'est le même que le dictionnaire python par défaut.

0
codeezer 4 juin 2020 à 23:00
def distinct_characters(l):
    d=dict()
    for i in l:
        k = set(i)
        d[i] = len(k)
    return d
distinct_characters(["check", "look", "try", "pop", "obo", "hehe"])

Cela ferait le travail!

0
Snehil 4 juin 2020 à 23:03