from collections import Counter
def myFunction(myDict):
myMax = 0 # Keep track of the max frequence
myResult = [] # A list for return
for key in myDict:
print('The key is', key, ', The count is', myDict[key])
print('My max is:', myMax)
# Finding out the max frequence
if myDict[key] >= myMax:
if myDict[key] == myMax:
myMax = myDict[key]
myResult.append(key)
# Case when it is greater than, we will delete and append
else:
myMax = myDict[key]
del myResult[:]
myResult.append(key)
return myResult
foo = ['1', '1', '5', '2', '1', '6', '7', '10', '2', '2']
myCount = Counter(foo)
print(myCount)
print(myFunction(myCount))
wyjściowa:
The list: ['1', '1', '5', '2', '1', '6', '7', '10', '2', '2']
Counter({'1': 3, '2': 3, '10': 1, '5': 1, '7': 1, '6': 1})
The key is 10 , The count is 1
My max is: 0
The key is 1 , The count is 3
My max is: 1
The key is 2 , The count is 3
My max is: 3
The key is 5 , The count is 1
My max is: 3
The key is 7 , The count is 1
My max is: 3
The key is 6 , The count is 1
My max is: 3
['1', '2']
napisałem ten prosty program, myślę, że może również pracować. Nie wiedziałem o funkcji most_common()
, dopóki nie wykonam wyszukiwania. Myślę, że powróci to jak najczęstszy element, działa przez porównanie maksymalnego elementu, gdy widzę częstszy element, usunie listę wyników i doda ją raz; lub jeśli ma tę samą częstotliwość, po prostu się do niej dołącza. I kontynuuj, dopóki cały Licznik nie zostanie powtórzony.
co czasie, gdy występują trzy powtórzone liczb, jak [ '1' '1', '2', '2', '8', 7 " "7"] ... Twój scenariusz nie zadziała. Dzięki, w przeciwnym razie rozwiązanie jest dobre. –
@james: Nie można odtworzyć, zwraca 'set (['1', '2', '7'])' dla mnie z obydwoma fragmentami kodu. –
Ach tak, nie ma problemu, teraz działa świetnie. Wielkie dzięki. –