我有兩個列表中的Python:合併兩個列表一起
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]
,我想將它們合併,所以我得到:
L_merge=[[100, 4], [101, 6], [102, 5]]
兩個名單可能不的是很重要的相同的尺寸。
我試圖使用字典,但無法弄清楚。我很高興使用numpy,熊貓或任何其他工具來獲得合併。
我有兩個列表中的Python:合併兩個列表一起
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]
,我想將它們合併,所以我得到:
L_merge=[[100, 4], [101, 6], [102, 5]]
兩個名單可能不的是很重要的相同的尺寸。
我試圖使用字典,但無法弄清楚。我很高興使用numpy,熊貓或任何其他工具來獲得合併。
你可以在兩個列表中使用collections.Counter
和簡單總和它們:
from collections import Counter
L1 = [[100, 1], [101, 2]]
L2 = [[100, 3], [101, 4], [102, 5]]
L_merge = (Counter(dict(L1)) + Counter(dict(L2))).items()
print(list(L_merge))
# [(100, 4), (101, 6), (102, 5)]
這很好,只是一個快速跟進:爲什麼'list(L_merge)'生成的結果而不是列表反正到避免它(只是出於好奇)。 – valenzio
@valenzio字典的'items'方法產生一個元組列表。您可以使用列表理解將元組轉換爲列表。 –
爲什麼不直接使用一個for循環:
L_merge = L2
for i in len(L1):
L_merge[i][-1] += L1[i][-1]
一個需要注意的是,這僅適用於如果L2是2所列出的長
是的,我猜你可以事先檢查哪個列表更長,但它看起來相當麻煩 – valenzio
L1=[[100, 1], [101, 2]]
L2=[[100, 3], [101, 4], [102, 5]]
d = {}
for a,b in L1+L2:
d[a] = d.get(a,0) + b
L_merge = [[k,v] for k,v in d.items()]
print(L_merge)
適應從t溶液他鏈接上面:'collections.Counter(dict(L1))+ collections.Counter(dict(L2))'。可能有一種方法可以首先將列表轉換爲「dict」。請參閱http://stackoverflow.com/q/11290092/2301450 – vaultah
你對這兩個列表有什麼瞭解?他們都是完全分類的嗎?中間是否有「差距」,其中一個項目在一個列表中,而另一個列表中沒有?你確定每個項目都是兩個整數列表嗎?等等。 –
「重複」的問題是關於組合的字跡,而不是列表 – mkj