在列表列表中查找字典值的中位数



我遇到了麻烦。 我有以下列表:

listA = [
[
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 20},
{u'source': u'manual', u'value': 30},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 30}
],
[
{u'source': u'manual', u'value': 20},
{u'source': u'manual', u'value': 50},
{u'source': u'manual', u'value': 80},
{u'source': u'manual', u'value': 60},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 40},
{u'source': u'manual', u'value': 30}
],
[
{u'source': u'manual', u'value': 60},
{u'source': u'manual', u'value': 20},
{u'source': u'manual', u'value': 40},
{u'source': u'manual', u'value': 30},
{u'source': u'manual', u'value': 20},
{u'source': u'manual', u'value': 10},
{u'source': u'manual', u'value': 50},
{u'source': u'manual', u'value': 10}
]
]

我想做的是循环嵌套列表,提取字典值(第一个嵌套列表的第一个位置,第二个嵌套列表的第一个位置,第三个嵌套列表的第一个位置 ->第一个嵌套列表的第二个位置,第二个嵌套列表的第二个位置,第三个嵌套列表的第二个位置等(,然后找到"x"位置值的中值。

谢谢!

您可以将列表推导与zip一起使用:

from statistics import median
[median(i['value'] for i in l) for l in zip(*listA)]
# [20, 20, 40, 30, 10, 10, 40, 30]

如果你想要numpy,你可以使用numpy.median:

import numpy as np
result = np.median([[i['value'] for i in l] for l in zip(*listA)], axis=1)
print(result)

输出

[20. 20. 40. 30. 10. 10. 40. 30.]

最新更新