Stagg - 1 year ago 84

Python Question

I have this list of dictionaries :

`[{'Eva': [4, 8, 2]}, {'Ana': [57, 45, 57]}, {'Ada': [12]}]`

I need to get the average of each key value, so that the output is :

`[{'Eva': [5], {'Ana' : [53]}, {'Ada':[12]}]`

The average must be rounded up or down by adding 0.5 and taking the only the integer part. For example, if the average is 4.3 adding 0.5 equals 4.8, so the output is 4. If the average is 4.6 adding 0.5 equals 5.1, so the output is 5.

I know how to use

`iteritems()`

Thanks in advance.

Recommended for you: Get network issues from **WhatsUp Gold**. **Not end users.**

Answer Source

You can use `zip`

and `numpy`

functions `mean`

and `round`

for this task:

```
In [8]: import numpy as np
In [9]: [dict(zip(d.keys(), [int(np.round(np.mean(d.values())))])) for d in L]
#Out[9]: [{'Eva': 5}, {'Ana': 53}, {'Ada': 12}]
```

Version with "less" parenthesis:

```
[dict(zip(d.keys(), [np.array(d.values()).mean().round().astype(int)])) for d in L]
```

Recommended from our users: **Dynamic Network Monitoring from WhatsUp Gold from IPSwitch**. ** Free Download**