【发布时间】:2016-06-30 22:56:04
【问题描述】:
在 Python 中,我有一个元组列表和一个长度相同的整数列表,例如,
a = [
[1, 2],
[3, 2],
[4, 66],
[2, 3]
]
b = [
1,
31,
31,
44
]
a 中的第 k 个条目可以被认为与 b 中的第 k 个条目相关联。
[3, 2] 和 [2, 3] 对我来说确实是一样的,我希望 a 考虑到这一点。另外,我想要一个属于新唯一列表的条目列表。对于上面的例子,
a2 = [
[1, 2],
[3, 2], # or [2, 3]
[4, 66]
]
b2 = [
[1],
[31, 44],
[31]
]
b2[0] 是 [1],因为 [1, 2] 仅与 1 相关联。 b2[1] 是 [31, 44],因为 [2, 3](等于 [3, 2] 与 31 和 44 中的 a 相关联。
可以逐个遍历a,将每个 2-list 设为frozenset,将其排序到字典中等等。不用说,如果 a 和 b 是大。
关于如何更聪明地处理这个问题的任何提示? (列表推导?)
【问题讨论】:
-
b2是怎么来的?
set(map(frozenset, a))也会非常高效 -
@PadraicCunningham 澄清了这一点。