Winner of an election Python

PROGRAM TO FIND THE WINNER OF AN ELECTION WHERE VOTES ARE REPRESENTED AS CANDIDATE NAMES



from collections import Counter 
  
votes =['john','johnny','jackie','johnny','john','jackie',
    'jamie','jamie','john','johnny','jamie','johnny','john'
  
#Count the votes for persons and stores in the dictionary
vote_count=Counter(votes)
  
#Find the maximum number of votes
max_votes=max(vote_count.values())
  
#Search for people having maximum votes and store in a list
lst=[i for i in vote_count.keys() if vote_count[i]==max_votes]
  
#Sort the list and print lexicographical smallest name
print(sorted(lst)[0])



Alternate Solution:

from collections import Counter 
  
def winner(input): 
  
    # convert list of candidates into dictionary 
    # output will be likes candidates = {'A':2, 'B':4} 
    votes = Counter(input
      
    # create another dictionary and it's key will 
    # be count of votes values will be name of 
    # candidates 
    dict = {} 
  
    for value in votes.values(): 
  
        # initialize empty list to each key to 
        # insert candidate names having same 
        # number of votes 
        dict[value] = [] 
  
    for (key,value) in votes.items(): 
        dict[value].append(key) 
  
    # sort keys in descending order to get maximum 
    # value of votes 
    maxVote = sorted(dict.keys(),reverse=True)[0
  
    # check if more than 1 candidates have same 
    # number of votes. If yes, then sort the list 
    # first and print first element 
    if len(dict[maxVote])>1
        print (sorted(dict[maxVote])[0])
    else
        print (dict[maxVote][0]) 
  
# Driver program 
if __name__ == "__main__"
    input =['john','johnny','jackie','johnny',
            'john','jackie','jamie','jamie',
            'john','johnny','jamie','johnny',
            'john'
    winner(input


OUTPUT
john

Comments

Popular posts from this blog

Solve the Sudoku Python

Solve the Sudoku Java

Find Duplicates Java