迭代python集中的各个元素

2024-04-25 04:57:22 发布

您现在位置:Python中文网/ 问答频道 /正文

给定具有n个元素的整数的m

我有下面的代码,它输出出现次数最多的元素。

def find_element_which_appeared_in_max_sets(input_set):

    hash_table = {}

    # count the frequencies
    for pair in input_set:
        for i in range(0,len(pair)):
            if pair[i] in hash_table:
                hash_table[pair[i]] = hash_table[pair[i]] + 1
            else:
                hash_table[pair[i]] = 1 # first occurence

    # scan and find the element with highest frequency.
    max_freq = 0
    for elem in hash_table:

        if hash_table[elem] > max_freq:
            max_freq = hash_table[elem]
            max_occured_elem = elem

    return max_occured_elem


input_set = {(5,4),(3,2),(4,3),(8,3)}
print ""+str(find_element_which_appeared_in_max_sets(input_set))

输出:

3

是否有一种更简洁/优雅的方式来迭代集合中的各个元素?


Tags: in元素whichforinputtablehashelement
2条回答

仅使用内置,不使用标准库导入:

def find_element_which_appeared_in_max_sets(input_set):
    hash_table = {}
    for pair in input_set:
        for item in pair:
            #enhanced as proposed by thefourtheye
            hash_table[item] = hash_table.get(item, 0) + 1
    max_occured_element = max(hash_table, key=hash_table.get)
    return max_occured_element

您可以简单地使用^{}^{},如下所示

def find_element_which_appeared_in_max_sets(input_set):
    return Counter(chain.from_iterable(input_set)).most_common(1)[0][0]

chain.from_iterable(input_set)将展平元组的输入集,以获得单个iterable,该iterable逐个给出每个元组的值。

然后Counter计算每个项出现的次数,并将该项及其计数作为字典进行维护。

然后,对Countermost_common(1)调用以(item, count)格式返回一个具有最大出现次数的项列表(传递给它的参数)。因为我们只对这个项感兴趣,所以返回第一个带有[0][0]的项。

相关问题 更多 >