Python:找到最多,选择一个特定的。等等

时间:2015-10-16 19:45:10

标签: python tuples

基本上,我需要帮助的是我正在进行的计划的一部分:

   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是否满足某个条件,如果是,我希望最后一个最大值替换先找到的那个。

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

祝你好运

1 个答案:

答案 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