2013-03-31 2 views
-1
vote(['G', 'G', 'N', 'G', 'C']) 

Я хочу, чтобы получить этот результат: ('G', [1, 3, 0, 1])список питон голос ([ 'G', 'G', 'N', 'G', 'C'])

g_count = 0 
n_count = 0 
l_count = 0 
c_count = 0 
for i in range(len(ballots)): 
    if ballots[i] == 'G': 
     g_count += 1 
    elif ballots[i] =='N': 
     n_count += 1 
    elif ballots[i] == 'L': 
     l_count +=1 
    else: 
     c_count += 1 

return [n_count,g_count,l_count,c_count] 

Как я получить «G» на фронте?

+0

Как вы предлагаете обрабатывать галстуки? И «dict» выглядит так, как вам хочется. –

+0

Связано с http://stackoverflow.com/questions/15732496/trying-to-fix-my-function? – YXD

+3

Если вы ищете [ЗЕЛЕНУЮ СРЕДНЮЮ СРЕДУ НПК] (http://stackoverflow.com/search?q=GREEN+NDP+CPC) - имена канадских политических партий (и я предполагаю, что «L» здесь означает « Liberal ") - в StackOverflow вы часто встречаете много вопросов, вероятно, потому, что некоторые профессионалы где-то назначают голосовые вопросы, связанные с такими вещами, как Borda count в Python, как назначение для новичков. – DSM

ответ

1

что-то вроде этого:

In [9]: from collections import Counter 

In [15]: def vote(lis): 
    ....:  c=Counter(lis) 
    ....:  return c.most_common()[0][0],[c[x] for x in "NGLC"] 
    ....: 

In [16]: vote(['G', 'G', 'N', 'G', 'C']) 
Out[16]: ('G', [1, 3, 0, 1]) 

In [17]: vote(['G', 'G', 'N', 'G', 'C','L','L']) 
Out[17]: ('G', [1, 3, 2, 1]) 

In [18]: vote(['G', 'L', 'N', 'G', 'C','L','L']) 
Out[18]: ('L', [1, 2, 3, 1]) 

здесь c.most_common() возвращается [('G', 3), ('C', 1), ('N', 1)], от этого вы можете получить 'G'.

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