Я обновляю ключевые имена списка словарей следующим образом:
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)
Есть ли какой-нибудь питонический способ сделать ключевой цикл/обновление в одной строке? Заранее спасибо!
Вероятно, вы можете использовать функцию zip() в сочетании с пониманием словаря. zip() функция: programiz.com/python-programming/methods/built-in/zip ; понимание dict: stackoverflow.com/questions/14507591/…
Вы можете использовать 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 понял это благодаря вашему полезному комментарию, поэтому я предложил альтернативный подход. Спасибо
Что такое vars? Это list из dicts? Опубликуйте пример ввода и ожидаемый результат.