Как сделать каждый элемент в списке в словаре заглавными буквами Python? - PullRequest
0 голосов
/ 17 июня 2020

Я хочу использовать заглавные буквы в каждом элементе списка внутри словаря.

dict = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}

Я хочу, чтобы каждый элемент в списке «еда» был написан с заглавной буквы.

Я пробовал сделать это

dict['food'].title()

Но не работает. Пожалуйста, помогите.

Ответы [ 4 ]

2 голосов
/ 17 июня 2020

title() работает только со строкой. Вы получаете доступ к списку через dict['food']. Вам нужно перебрать этот список и вызвать эту функцию для каждого из них, а затем изменить значение dict['food']. К счастью, это можно сделать в одной строке с пониманием списка.

dict = {'name': 'Kevin', 'age':16, 'food':['chicken', 'pizza', 'burger'], 'shoes':'Adidas'}
dict['food'] = [food.title() for food in dict['food']]
1 голос
/ 17 июня 2020

Просто используйте capitalize для каждого элемента в списке, например:

dict["food"] = [f.capitalize() for f in dict["food"]]
0 голосов
/ 17 июня 2020

Вы можете использовать понимание списка и словаря в сочетании с ленивым вычислением синтаксиса 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)
0 голосов
/ 17 июня 2020

Вы можете использовать назначение элемента, чтобы изменить список на месте.

Например:

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)

Альтернативой является использование выражения для создания нового объекта списка с правильными значениями . Это адекватно освещено в другом ответе, и я не буду повторять его здесь.

Также не называйте свой словарь dict. Нехорошо переопределять встроенный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...