usar la comprensión de la lista de python para actualizar el valor del diccionario

Tengo una lista de diccionarios y me gustaría actualizar el valor para el ‘precio’ clave con 0 si el valor del precio clave es igual a ”

data=[a['price']=0 for a in data if a['price']==''] 

¿Es posible hacer algo así? He intentado también con

 a.update({'price':0}) 

pero no funcionó tan bien …

Las asignaciones son declaraciones, y las declaraciones no se pueden utilizar dentro de la lista de comprensión. Solo usa un bucle for normal:

 data = ... for a in data: if a['price'] == '': a['price'] = 0 

Y en aras de la integridad, también puedes usar esta abominación (pero eso no significa que debas):

 data = ... [a.__setitem__('price', 0 if a['price'] == '' else a['price']) for a in data] 

Es una mala práctica, pero posible:

 import operator l = [ {'price': '', 'name': 'Banana'}, {'price': 0.59, 'name': 'Apple'}, {'name': 'Cookie', 'status': 'unavailable'} ] [operator.setitem(p, "price", 0) for p in l if "price" in p and not p["price"]] 

Los casos en los que no hay un “precio” clave se manejan y el precio se establece en 0 si p["price"] es False , y la cadena vacía o cualquier otro valor que Python considere False .

Tenga en cuenta que la lista de comprensión devuelve la basura como [None] .