如何在python中合并二维列表的内部列表

我有一个像这样的二维列表:

[['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]]]


沧海一幻觉
浏览 351回答 3
3回答

梵蒂冈之花

对于您的 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%

函数式编程

有collections.defaultdict对象:from collections import defaultdictlst = [['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]]]

慕森王

我认为最好为您的情况使用字典,如下所示d = { }for key,value in ls:    d[key] = d.get(key, []) + [value]print(d)d.items()如果需要列表,可以使用获取元组列表
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python