您可以这样计算中位数:
np.median(dict(list).values())
# in Python 2.7; in Python 3.x it would be `np.median(list(dict(list_of_tuples).values()))`
首先将您的列表转换为字典,然后计算其值的中位数。
当你想获得实际的密钥时,你可以这样做:
dl = dict(list) #{'a': 1, 'b': 3, 'c': 5}
dl.keys()[dl.values().index(np.median(dl.values()))]
这将打印'b'
。假设中位数在列表中,如果不是ValueError
会被抛出。因此,您可以使用try/except
就像这样使用@Anand S Kumar 的答案中的例子:
import numpy as np
l = [('a',1), ('b',3), ('c',5), ('d',22),('e',11),('f',3)]
# l = [('a',1), ('b',3), ('c',5)]
dl = dict(l)
try:
print(dl.keys()[dl.values().index(np.median(dl.values()))])
except ValueError:
print('The median is not in this list. Its value is ',np.median(dl.values()))
print('The closest key is ', dl.keys()[min(dl.values(), key=lambda x:abs(x-np.median(dl.values())))])
对于第一个列表,您将获得:
中位数不在此列表中。其值为4.0
最接近的键是 f
对于您的示例,它只打印:
b