给定具有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
是否有一种更简洁/优雅的方式来迭代集合中的各个元素?
仅使用内置,不使用标准库导入:
您可以简单地使用^{} 和^{} ,如下所示
chain.from_iterable(input_set)
将展平元组的输入集,以获得单个iterable,该iterable逐个给出每个元组的值。然后
Counter
计算每个项出现的次数,并将该项及其计数作为字典进行维护。然后,对
Counter
的most_common(1)
调用以(item, count)
格式返回一个具有最大出现次数的项列表(传递给它的参数)。因为我们只对这个项感兴趣,所以返回第一个带有[0][0]
的项。相关问题 更多 >
编程相关推荐