2015-10-16 75 views
-1

所以基本上,我有什么需要帮助的是一个程序的一部分,我的工作:Python:找到最大值,选择一个特定的最大值。等

votes = (a tuple with elements such as: 11222, 1314, 551, 555) 
    given_seats = (a tuple with elements ie: 0, 1, 0, 4) 

    first_maximum = max(votes) 
    first_maximum_position = votes.index(max(votes)) 

    for another_maximum in range(len(votes)): 
     if another_maximum != first_maximum_position 
      if another_maximum == first_maximum 
       if given_seats.index(another_maximum) < given_seats.index(first_maximum_position): 
        first_maximum_position = outro_max 

这部分将是这一个。我没有详细说明函数的作用。我试图做的是:首先,找到一个元组内的最大值以及最大值所在的位置。得到这些信息后,我需要逐个检查该tupple的其他元素,以查看是否有任何具有相同值的同一元组的其他元素具有最大值。

如果没有任何其他元素具有与找到的最大值相同的值,那么函数将继续进行一些计算(工作正常)。另一方面,如果发现元组中的其他元素与最大值具有相同的值,我想知道它的位置,以便我可以检查一个不同的tupple是否满足某个条件,如果是,我想要最后的最大值来替换先找到的最大值。

这有点难以解释,但这是我能做的最好的。

问候

+0

请编辑这个来澄清你的代码应该做什么。单个示例不足以描述所需的功能,并且您的底层代码描述没有足够的定义对象。 – Prune

+0

这只是很难解释,因为你没有产生一个最小的例子! –

回答

1

如果使用enumerate得到在同一时间两个指标和值第一位是容易的。

import operator 

max_idx, max_val = max(enumerate(votes), key=operator.itemgetter(1)) 
# operator.itemgetter(1) is equivalent to lambda x: x[1] 

第二位听起来像你应该使用一个Counter,但如果你喜欢,你可以做的很长的路要走。

max_values = [(idx, val) for idx,val in enumerate(votes) if val==max_val] 
# a list of ALL values that match max_val, including by necessity max_val