của nó một chút không rõ ràng như thế nào dữ liệu của bạn là thực sự đại diện, vì vậy tôi đã giả định nó là một danh sách các hàng:
data = [('Ram',500), ('Sam',400), ('Test',100), ('Ram',800), ('Sam',700),
('Test',300), ('Ram',900), ('Sam',800), ('Test',400)]
from collections import defaultdict
def median(mylist):
sorts = sorted(mylist)
length = len(sorts)
if not length % 2:
return (sorts[length/2] + sorts[length/2 - 1])/2.0
return sorts[length/2]
data_dict = defaultdict(list)
for el in data:
data_dict[el[0]].append(el[1])
print [(key,median(val)) for key, val in data_dict.items()]
print median([5,2,4,3,1])
print median([5,2,4,3,1,6])
#output:
[('Test', 300), ('Ram', 800), ('Sam', 700)]
3
3.5
Chức năng median
trả trung bình từ một danh sách. Nếu có một số lượng các mục nhập đều phải mất giá trị trung bình của hai mục giữa (đây là tiêu chuẩn).
Tôi đã sử dụng defaultdict để tạo dict được khóa bởi dữ liệu của bạn và giá trị của chúng, đây là đại diện hữu ích hơn cho dữ liệu của bạn.
Nếu bạn chỉ tìm kiếm các thuật toán trung bình thử [này] (http://stackoverflow.com/questions/7578689/median-code-explanation) –