Я экспериментирую с использованием map
, filter
и reduce
в Python 3.6 на данный момент. То, что я пытаюсь сделать, дано в списке словарей, измените все значения, связанные с определенным ключом, на значение нижнего регистра. Например:Как использовать карту для строчных строк в словаре?
message_one = {"content": "I'm glad I know sign language, it's pretty handy."}
message_two = {"content": "I am on a seafood diet. Every time I see food, I eat it."}
message_three = {"content": "Labyrinths are amazing."}
messages = [message_one , message_two , message_three]
print(to_lowercase(tweets))
#to_lowercase should just return the a list of dictionaries, but content lower-cased.
Я попытался использовать карту сначала.
def to_lowercase(messages):
lower_case = map(lambda x: x["content"].lower(), messages)
return lower_case
Однако, это только кажется, возвращает список всех контент-сообщений в списке и не perserve в формат словаря. Я не верю, что reduce
был бы правильным в этом сценарии, потому что я не хочу возвращать ни одного значения в конце, и filter
, похоже, не имеет смысла ни здесь.
Как использовать map
, reduce
, или filter
для этого решения?
Нет, 'reduce()' и 'filter()' не являются подходящими инструментами здесь. Они будут делать совсем другие вещи. 'filter()' используется для * выбора элементов * из списка, а 'reduce()' используется для создания накопления. Как сумма или список или что-то еще, требующее, чтобы промежуточный результат обновлялся со следующим элементом из последовательности. Это не те инструменты, которые вы ищете. –
Есть ли в словарях какие-либо ключи, которые нужно сохранить? Является ли обновление словарей * на месте приемлемым или вы должны создавать копии? –
Вы хотите * изменить * значения в существующем словаре, или вы хотите вернуть * новый * словарь с нижним регистром? – BrenBarn