Обновление ключей словаря в одну строку

Я обновляю ключевые имена списка словарей следующим образом:

def update_keys(vars: list) -> None:
    keys = ["A", "V", "C"]
    for v in vars:
        for key in keys:
            if key in v:
                v[key.lower()] = v.pop(key)

Есть ли какой-нибудь питонический способ сделать ключевой цикл/обновление в одной строке? Заранее спасибо!

Что такое vars? Это list из dicts? Опубликуйте пример ввода и ожидаемый результат.

Selcuk 10.01.2023 11:10

Вероятно, вы можете использовать функцию zip() в сочетании с пониманием словаря. zip() функция: programiz.com/python-programming/methods/built-in/zip ; понимание dict: stackoverflow.com/questions/14507591/…

Haroldo_OK 10.01.2023 11:11
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
Учебник по веб-скрапингу
Учебник по веб-скрапингу
Привет, ребята... В этот раз мы поговорим о веб-скрейпинге. Целью этого обсуждения будет узнать и понять, что такое веб-скрейпинг, а также узнать, как...
Тонкая настройка GPT-3 с помощью Anaconda
Тонкая настройка GPT-3 с помощью Anaconda
Зарегистрируйте аккаунт Open ai, а затем получите ключ API ниже.
2
2
96
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать map с lambda для этого, vars[:] будет обновлять исходный список vars.

def update_keys(vars: list) -> None:
    keys = ["A", "V", "C"]
    vars[:] = map(lambda v: {k if k not in keys else k.lower(): v[k] for k in v}, vars)

Понимание списка с использованием update также может дать тот же результат.

def update_keys(vars: list) -> None:
    keys = ["A", "V", "C"]
    [v.update({key.lower(): v.pop(key) for key in keys if key in v}) for v in vars]

Вы не должны использовать понимание списка для побочных эффектов

juanpa.arrivillaga 10.01.2023 11:40

Привет @juanpa.arrivillaga понял это благодаря вашему полезному комментарию, поэтому я предложил альтернативный подход. Спасибо

Jamiu S. 10.01.2023 11:57

Другие вопросы по теме

Правильный способ обработки гигантских строк с многопроцессорной обработкой
Создает новый словарь, состоящий из другого ключа словаря и двух переменных
Установите регулярное выражение с множественным выбором, чтобы попытки сопоставления всегда выполнялись слева направо, независимо от того, пытается ли другое предыдущее регулярное выражение захватить больше символов?
Ошибка из селена: AttributeError: объект «Сервис» не имеет атрибута «процесс»
Создать новый столбец типа списка на основе операции деления существующих столбцов в pandas
Ошибка установки Anaconda на macOS Ventura
Как использовать события (Chrome-Developer-Tools), используя Selenium с Python в качестве потока?
Распечатать данные sql, сгруппированные в одну строку, без повторения строки
Как правильно читать ключ Python RSA Pem?
Изменение размера изображений с сохранением соотношения сторон