Как прописать первую букву только в значениях dict

#python #pandas #dictionary

#питон #панды #словарь

Вопрос:

Вот словарь

 dictionary = {'Happy':['SMILE','LAUGH','BEAMING'],  'Sad':['FROWN','CRY','TEARS'],  'Indifferent':['NEUTRAL','BLAND', 'MEH']}  

Я пытаюсь изменить значения во всем словаре таким образом, чтобы УЛЫБКА стала Улыбкой, СМЕХ стал Смехом и т. Д.

Это то, что я пытаюсь

 {str(k).upper():str(v).upper() for k,v in dictionary.values()}  

Но результатом этого является заглавная буква ключей и добавление примечаний к значениям.

Комментарии:

1. что ж, str.capitalize() в данном случае вам это не нужно str.upper() . Кроме того, почему вы применяете этот метод также и к ключам?

2. Вам также нужно изменить ключи? Или это была ошибка?

Ответ №1:

Вы можете использовать:

 {k.upper():[s.capitalize() for s in v]  for k,v in dictionary.items()}  

выход:

 {'HAPPY': ['Smile', 'Laugh', 'Beaming'],  'SAD': ['Frown', 'Cry', 'Tears'],  'INDIFFERENT': ['Neutral', 'Bland', 'Meh']}  

NB. это также меняет ключ к заглавным буквам, я не уверен, что это то, что вы хотели. Если не использовать k или k.capitalize()

Ответ №2:

Попробуйте сделать следующее

 d = {'Happy':['SMILE','LAUGH','BEAMING'],  'Sad':['FROWN','CRY','TEARS'],  'Indifferent':['NEUTRAL','BLAND', 'MEH']} d = {k:[x.capitalize() for x in v] for k,v in d.items()} print(d)  

выход

 {'Happy': ['Smile', 'Laugh', 'Beaming'], 'Sad': ['Frown', 'Cry', 'Tears'], 'Indifferent': ['Neutral', 'Bland', 'Meh']}  

Ответ №3:

Одно из решений:

 result = {k: [emotion[0].upper()   emotion[1:].lower() for emotion in v] for k, v in dictionary.items()}  

Тогда result это

{«Счастливый»: [«Улыбка», «Смех», «Сияющий»], «Грустный»: [«Хмурый», «Плач», «Слезы»], «Равнодушный»: [«Нейтральный», «Мягкий», «Ме»]}