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