-1
J'essaie de comprendre la fonction max dans ce code. Si j'utilise mon bon sens, je mets la fonction max comme ceci k, max (len (v)) au lieu de ci-dessous. Mais cela me donne une erreur de syntaxe. Comment fonctionne la fonction max ici?Fonction max dans la compréhension
animals = { 'a': ['aardvark'], 'b': ['baboon'], 'c': ['coati']}
animals['d'] = ['donkey']
animals['d'].append('dog')
animals['d'].append('dingo')
def biggest(aDict):
'''
aDict: A dictionary, where all the values are lists.
returns: The key with the largest number of values associated with it
'''
# List comprehension
return max((k, len(v)) for k, v in aDict.items())[0]
print(biggest(animals))
Il ne se comporte pas différemment. len renvoie un int et max (5) n'a pas de sens car 5 n'est pas une collection de nombres dont vous pouvez obtenir le maximum. Vous n'obtiendrez pas une erreur de syntaxe, cependant, vous obtiendrez un TypeError – jonatan
Oui, vous avez raison sur len. mais animals.items() donne dict_items ([('a', ['aardvark']), ('b', ['baboon']), ('c', ['coati']), ('d' , ['âne', 'chien', 'dingo'])]). Pourquoi max considère rightside mais pas le côté gauche? – Mearex
Vous ne devez pas supposer que max choisira le tuple qui a une deuxième valeur avec la plus grande longueur - c'est incroyablement spécifique. Vous pouvez utiliser le paramètre 'key' de max pour extraire la valeur par laquelle les tuples doivent être comparés. – jonatan