亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在python中合并二維列表的內部列表

如何在python中合并二維列表的內部列表

滄海一幻覺 2022-06-22 17:40:17
我有一個像這樣的二維列表:[['dragon', 11], ['dragon', 111], ['stage_1', 1], ['stage_1', 2], ['stage_2', 10], ['stage_2', 12]].我希望它看起來像這樣:[['dragon', [11, 111]], ['stage_1', [1, 2]], ['stage_2', [10, 12]]]
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

對于您的 2d 列表結構,您可以使用 zip 和列表理解


lst = [['dragon', 11], ['dragon', 111], ['stage_1', 1], ['stage_1', 2], ['stage_2', 10], ['stage_2', 12]]


k, v = zip(*lst)

result = [[k[i], v[i:i+2]]  for i in range(0, len(k), 2)]

print(result)

輸出


[['dragon', (11, 111)], ['stage_1', (1, 2)], ['stage_2', (10, 12)]]

性能比較


1.列表理解/壓縮


    k, v = zip(*lst)

    result = [[k[i], v[i:i+2]]  for i in range(0, len(k), 2)]


    100000 loops, best of 3: 3.72 μs per loop (using timeit)

2.字典


d = defaultdict(list)

for k, v in lst:

    d[k].append(v)

groups = list(map(list, d.items()))


100000 loops, best of 3: 5.85 μs per loop (using timeit)

結果:列表理解速度快約 57%


查看完整回答
反對 回復 2022-06-22
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

有collections.defaultdict對象:


from collections import defaultdict


lst = [['dragon', 11], ['dragon', 111], ['stage_1', 1], ['stage_1', 2], ['stage_2', 10], ['stage_2', 12]]

d = defaultdict(list)


for k, v in lst:

    d[k].append(v)

groups = list(map(list, d.items()))


print(groups)

輸出:


[['dragon', [11, 111]], ['stage_1', [1, 2]], ['stage_2', [10, 12]]]


查看完整回答
反對 回復 2022-06-22
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

我認為最好為您的情況使用字典,如下所示


d = { }

for key,value in ls:

    d[key] = d.get(key, []) + [value]


print(d)

d.items()如果需要列表,可以使用獲取元組列表


查看完整回答
反對 回復 2022-06-22
  • 3 回答
  • 0 關注
  • 364 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號