Je veux mettre en majuscule chaque élément d'une liste dans un dictionnaire.
dict['food'].title()
Je veux que chaque élément de la liste «nourriture» soit mis en majuscule.
J'ai essayé de faire ça
dict = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}
Mais ça ne marche pas. Veuillez aider.
4 Réponses :
Vous pouvez utiliser l'attribution d'éléments pour modifier la liste sur place.
Par exemple:
dct = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}
lst = dct['food']
for i, val in enumerate(lst):
lst[i] = val.title()
print(dct)
L'alternative consiste à utiliser une expression pour générer un nouvel objet de liste avec les valeurs correctes. Cela est correctement couvert par une autre réponse et je ne la répéterai pas ici.
De plus, n'appelez pas votre dictionnaire dict . Il n’est pas bon de remplacer un élément intégré.
title () ne fonctionne que sur la chaîne. Vous accédez à la liste via dict ['food'] . Vous devez parcourir cette liste et appeler cette fonction sur chacun d'eux, puis modifier la valeur de dict ['food'] . Heureusement, cela peut être fait en une seule ligne avec une compréhension de liste.
dict = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}
dict['food'] = [food.title() for food in dict['food']]
Utilisez simplement capitalize sur chaque élément de la liste comme ceci:
dict["food"] = [f.capitalize() for f in dict["food"]]
Vous pouvez utiliser la compréhension de liste et de dictionnaire, combinée à la syntaxe d'évaluation paresseuse if then else:
dict = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}
result = {k:([i.title() for i in v] if isinstance(v,list) else v) for k,v in dict.items()}
print(result)