首页 > 解决方案 > 根据唯一性将列表列表转换为数字列表

问题描述

所以让我们说我们有一个二维数字列表:

[[1, 2, 3], [5, 6, 7], [1, 2, 3], [1, 2, 5]]

我想将每个子列表更改为一个数字,但让类似的列表具有相同的数字。所以给定的例子会变成:

[1, 2, 1, 3]

有没有一种有效的方法来做到这一点?

标签: python

解决方案


你可以试试这个:

l = [[1, 2, 3], [5, 6, 7], [1, 2, 3], [1, 2, 5]]

from itertools import count
from collections import defaultdict
from functools import partial

m = defaultdict(partial(next, count()))
[m[tuple(e)]+1 for e in l]

Out[24]: [1, 2, 1, 3]

推荐阅读