我需要團結在Python3,其中重複可以存在兩個列表,併爲一組,這些結果列表將包含多達最大兩個lists.An例子可能澄清清單聯合:與重複
[1,2,2,5](some operator)[2,5,5,5,9]=[1,2,2,5,5,5,9]
想法?
我需要團結在Python3,其中重複可以存在兩個列表,併爲一組,這些結果列表將包含多達最大兩個lists.An例子可能澄清清單聯合:與重複
[1,2,2,5](some operator)[2,5,5,5,9]=[1,2,2,5,5,5,9]
想法?
可以使用collections.Counter
類:
>>> from collections import Counter
>>> combined = Counter([1,2,2,5]) | Counter([2,5,5,5,9])
>>> list(combined.elements())
[1, 2, 2, 5, 5, 5, 9]
它可以用作多集(無序集合,其中每個元素可以出現多次)。 |
運算符爲您提供多重集合,其中每個元素出現最大(apperances_in_counter1,appearances_in_counter2)次。
這個類是在Python 2.7和3.1中添加的。
轉換陣列字典與a[key] = count
創建規則c[key] = a.get(key, 0) > b.get(key, 0) and a[key] or b[key]
新字典。你需要在a和b字典中遍歷兩個鍵。
展開詞典,result += [value] * key
爲什麼首先使用列表?這些數據看起來像一個字典對我說:
[1,2,2,5] -> {1: 1, 2: 2, 5: 1}
[2,5,5,5,9] -> {2: 1, 5: 3, 9: 1}
然後很簡單:
keys = set(a.keys()+b.keys())
vals = [max(a.get(n, 0), b.get(n, 0)) for n in keys]
d = dict(zip(keys, vals))
print d
結果:
{1:1,2:2,5:3,9: 1}
更新:在@interjay的答案之後,你會得到基本相同的數據模型,但已經實現了使用它的方法。去解決這個問題! – Kos
不錯......我不知道那個模塊。 – kaiseroskilo
作品來自python 2.7 – varela
酷,我不知道那一個。由於術語「multiset」對我來說聽起來像是一個流行語,所以讓我引用Python文檔中的描述:**「計數器是用於計算可哈希對象的字典子類」**我發現這個描述更直觀,我希望你也會。 – Kos