<p>你的解释很混乱,但据我所知,我们有键:值对和变量的收入,它们被保存为字典(哈希映射),如果频率有相同的值,你希望保持最高频率或最高(键)。简而言之,我的建议是,你只想在每次更新字典时重新创建它。让我们看看您的代码:</p>
<pre><code># creates dictionary out of frequencies based on the input list
def simulating_list(req, req_list):
req_list[req] = 1 if req not in req_list else req_list[req]+1
# 1.takes items of the list and sorts by frequency;
# 2.takes a slice of the list starting from 8th element from the end
# 3.reverses the list(just to look nice, dictionaries nowadays displyed ordered)
# 4.creates new dictionary out of list of lists
def filter_eight(req_list):
return dict(sorted(req_list.items(), key=lambda x: x[1])[-8:][::-1])
# Your request lists
requests = [1, 13, 15, 1, 3, 4, 2, 12, 10,
4, 1, 15, 15, 11, 14, 3, 4, 2, 1, 5, 3, 2, 4, 1, 2, 3, 4, 5, 12, 3, 4, 2, 34, 23, 1, 2, 3, 4, 12, 3, 12, 3, 4, 2, 3, 7, 10, 9, 14, 5]
# data base
req_data_base = {}
# generator inside the list will execute
[simulating_list(i, req_data_base) for i in requests]
print(filter_eight(req_data_base))
# Displays dictionary with key = request, value= frequency
# If you want to display it differently its up to you
# {3: 9, 4: 8, 2: 7, 1: 6, 12: 4, 5: 3, 15: 3, 14: 2}
</code></pre>