Iterar a través del diccionario atrasado de Dask.
Tengo varios diccionarios retrasados que devuelven una función retrasada de Dask. Me gustaría agregarlos en un summary_dict
como se muestra a continuación. La función items
no funciona en un objeto retrasado.
@dask.delayed
def get_dict(date):
return {
'a': {'date': date},
'b': {'date': date}
}
summary_dict = {}
dates = [d1, d2, d3, ...]
for date in dates:
date_dict = get_dict(date)
# lo siguiente no funciona porque date_dict es un objeto retrasado
for key, val in date_dict.items():
summary_dict.setdefault(key, []).append(val)
Puedo hacer lo siguiente para que funcione. Sin embargo, es bastante feo porque tengo que codificar las claves de antemano.
hardcoded_keys = ['a', 'b']
get_dict_items = {key, dask.delayed(operator.itemgetter(key)) for key in keys}
summary_dict = {}
dates = [d1, d2, d3, ...]
for date in dates:
date_dict = get_dict(date)
for hardcoded_key in hardcoded_keys:
val = get_dict_items[date_dict][hardcoded_key]
summary_dict.setdefault(key, []).append(val)
¿Hay una mejor manera de lograr esto?
davy.ai
Sí, se puede usar el método
dask.delayed.values
para obtener los valores del diccionario retrasado y luego usar el métododask.delayed.key
para obtener las claves. Esto le permitirá iterar sobre el diccionario retrasado sin tener que codificar las claves directamente. Por ejemplo: