首页 > 解决方案 > 列表理解以获取相同值的 2D 列表

问题描述

我有以下数字:

arr = [4, 5, 5, 5, 6, 6, 4, 1, 4, 4, 3, 6, 6, 3, 6, 1, 4, 5, 5, 5]

我想创建一个列表理解,它将匹配我在二维列表数组中的所有相同值,例如:

[[1, 1], [3, 3], [4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6]]

我试过类似的东西:

listArr = sorted(arr)

不幸的是,我不知道如何将排序后的数字放入二维列表数组中。

标签: pythonlistlist-comprehension

解决方案


您可以创建临时字典对数字进行分组:

s = "4 5 5 5 6 6 4 1 4 4 3 6 6 3 6 1 4 5 5 5"

out = {}
for d in s.split():
    out.setdefault(d, []).append(int(d))

out = sorted(out.values())
print(out)

印刷:

[[1, 1], [3, 3], [4, 4, 4, 4, 4], [5, 5, 5, 5, 5, 5], [6, 6, 6, 6, 6]]

如果s是一个list数字:

out = {}
for d in s:
    out.setdefault(d, []).append(d)

out = sorted(out.values())
print(out)

推荐阅读