Itérer éléments individuels en python ensembles
Donné m jeux de d'entiers qui ont de n éléments.
J'ai le code ci-dessous, qui sort de l'élément qui se produit nombre de fois maximum.
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))
De sortie:
3
Est-il un plus propre/de manière élégante de l'itération sur les éléments individuels de l'ensemble?
Voulez-vous dire un
pour commencer,
Oui, dire m = 4 et n = 2 puis entrée est input_set = {(5,4),(3,2),(4,3),(8,3)}
set
de m
tuples
qui ont n
éléments?pour commencer,
for i in range(0,len(pair)):
faut juste être for i in pair:
Oui, dire m = 4 et n = 2 puis entrée est input_set = {(5,4),(3,2),(4,3),(8,3)}
OriginalL'auteur KurinchiMalar | 2016-01-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement utiliser
collections.Compteur
etitertools.de la chaîne.from_iterable
, à l'instar de cechain.from_iterable(input_set)
aplatissement de l'entrée ensemble de tuples pour obtenir un seul objet iterable qui donne des valeurs de chacun des n-uplets, un par un.Puis
Counter
compte le nombre de fois que chaque élément s'est produite et maintient l'élément et son compte comme un dictionnaire.Puis le
most_common(1)
appel surCounter
renvoie une liste d'articles avec des hautn
(paramètre est passé) nombre maximum d'occurrences, dans le format(item, count)
. Puisque nous nous intéressons uniquement à l'élément, de nous retourner le premier élément avec[0][0]
.OriginalL'auteur thefourtheye
En utilisant uniquement built-ins, sans bibliothèque standard importations:
if..else
peut être remplacé par cettehash_table[item] = hash_table.get(item, 0) + 1
pouvez-vous expliquer hash_table.obtenir(item, 0)
OriginalL'auteur Nikita