2013-08-07 4 views
-2

Моего список в настоящее времяПопытки взять среднее строк в списке и сравните там счетчик в списке входного файл

['AA11','AA11','AA22','AA33','AA44','AA44'] 

Этих значения моего, что через функцию вернулся я, и они работают, у меня есть (count) для len моего исходного файла данных (AA ** 10 из них) Я хочу (strip? split? enumerate?) этот список и делить счетчик каждой отдельной строки на счет исходного файла (в моем список есть 2 подсчета для некоторых строк), таким образом, я бы нашел среднее значение для строки, AA ** было бы в этом списке (счет), а затем взять среднее значение (средняя сумма/счет)? из этого и вернуть a (float?). AA11 там дважды, поэтому 2/10 = .2, однако AA22 существует один раз, так что 1/10 = и т. Д. И так далее.

ответ

3

Это простое использование модуля collections и Counter.

from collections import Counter 
common = Counter(yourList).items() 
average = [(a, float(b)/len(common)) for (a,b) in common] 

В результате запуск его на данном списке:

>>> average 
[('AA11', 0.5), ('AA33', 0.25), ('AA22', 0.25), ('AA44', 0.5)] 
+0

+1, но я бы, возможно, заменить 'most_common()' 'с позиций()' или 'iteritems()' так, чтобы было ясно, что все 'average' будет иметь все элементы. –

+0

Это хороший момент, спасибо. Они делают то же самое, но яснее всегда лучше. –

+0

final edit: я хочу взять счет каждого AA ** в моем списке (AA11 = 2 в моем списке выше и т. Д. Для AA12 и т. Д.), А затем делить все числа, которые я получаю, на сколько (не- повторяется) AA ** есть в списке, в списке выше есть 4 не повторяющихся значения AA ** @mattbryant –

0

Он принимает список, а затем срывает «AA», а затем извлекает номер части, а затем находит число раз каждый номер появился.

from collections import Counter 

a=['AA11','AA11','AA22','AA33','AA44','AA44'] 
num=list() 
for index,val in enumerate(a): 
    num.append(int(val.split('AA',1)[1])) 
print Counter(num).items() 
+0

Нет, AA11 - это строка в моем списке, и в моем исходном файле данных есть 11 AA11, я хочу узнать, сколько у меня AA11 у меня есть в моем списке, а затем делить этот номер счета на количество AA11 в моем файле данных, который я определил ранее как «count» @mattbryant –

Смежные вопросы