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))
Output:
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']
tôi đã viết chương trình đơn giản này, tôi nghĩ rằng nó cũng có thể làm việc. Tôi đã không nhận thức được chức năng most_common()
cho đến khi tôi thực hiện tìm kiếm. Tôi nghĩ rằng điều này sẽ trả về nhiều phần tử thường xuyên nhất, nó hoạt động bằng cách so sánh phần tử thường xuyên tối đa, khi tôi thấy một phần tử thường xuyên hơn, nó sẽ xóa danh sách kết quả và nối nó một lần; hoặc nếu nó là cùng một tần số, nó chỉ đơn giản là phụ thêm vào nó. Và tiếp tục đi cho đến khi toàn bộ Counter được lặp lại.
gì về thời gian khi có 3 lặp đi lặp lại con số, như [ '1', '1', '2', '2', '8', '7', '7'] ... kịch bản của bạn sẽ không hoạt động cho điều đó. Cảm ơn, nếu không thì giải pháp là tốt. –
@james: Không thể tạo lại, nó trả về 'bộ (['1', '2', '7'])' cho tôi với cả hai đoạn mã. –
À vâng, không vấn đề gì, nó hoạt động rất tốt cho tôi bây giờ. Cảm ơn nhiều. –