平衡陣列是每個元素出現相同次數的陣列。
給定一個包含 n 個元素的陣列:回傳一個字典,其中鍵作為元素,值作為平衡給定陣列所需的元素計數
例子
elements = ["a", "b", "abc", "c", "a"]
預期輸出:{"b":1, "abc":1, "c":1}
因為有 2 a,所以我們還需要 1 個b, abc, c
希望有幫助
uj5u.com熱心網友回復:
您可以使用Counter來計算頻率,然后通過迭代獲得所需的頻率 -
from collections import Counter
elements = ["a", "b", "abc", "c", "a"]
counts = Counter(elements)
max_freq = max(counts.values()) # 2 in this case
ans = {k: max_freq - v for k, v in counts.items() if v < max_freq}
print(ans)
輸出 -
{'b': 1, 'abc': 1, 'c': 1}
uj5u.com熱心網友回復:
這不是家庭作業,而是元資料工程師面試準備問題;)
這是我不使用 Counter 的解決方案
lst = ["a", "b", "abc", "c", "a"]
tuples = [(i, lst.count(i)) for i in lst]
tuples.sort(key=lambda x: -x[1])
max_value = tuples[0]
{k: max_value[1] - v for k,v in tuples if v < max_value[1]}
uj5u.com熱心網友回復:
count = {}
for element in input:
count[element] = count.get(element,0) 1
return {key:max(count.values()) - value for (key,value) in count.items() if value != max(count.values())}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429935.html
