creating a dictionary from mapping in python?

Question:

I have the following code that tries to create a dictionary with three keys, and 40 values for each key hopefully.
Unfortunately when I try to display the result it only gives the output "<map at 0x7f14048694e0>", and not a dictionary as I intended.

Is there a better way to make a dictionary from the function cat(i) in my code?

data = {}
catchments = 40
randomlist = random.sample(range(2, 2100), catchments)
path = '/uufs/chpc.utah.edu/common/home/u1265332/sliced_catchments/'
def cat(i):
    catch = xr.open_dataset(path + 'catch_' + str(i) + '.nc')
    catx = catch.PETNatVeg.mean().values/catch.Prec.mean().values
    caty = catch.TotalET.mean().values/catch.Prec.mean().values
    sf   = catch.snowfall.mean().values/catch.Prec.mean().values
    return {'catx':catx,'caty':caty,'sf':sf}

results = map(cat(i),randomlist)
results
Asked By: Zeeshan Asghar

||

Answers:

map returns an iterator, meaning that the results are computed when you iterate over it.
To get the values, you can convert it to a list:

results = list(map(cat, randomlist))

Note that you just need to pass the function cat to map.

Answered By: Plagon
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.