【发布时间】:2013-12-15 11:02:27
【问题描述】:
我需要检查一个列表是否包含 python 中另一个列表的每个元素。不完全是集合操作,因为在集合中考虑了不同的值。我该怎么做?
示例: a 是较大的列表,b 是较小的集合
a = [1, 1, 2, 4], b = [1, 2, 3] -> False
a = [1, 1, 2, 3], b = [1, 2, 3] -> True
a = [1, 2, 4], b = [1, 2, 1] -> False // Because b has two 1s but a has only one.
请您仔细查看第三种情况。
[N. B.] 我确切地知道如何通过哈希映射来完成。但我想要不那么笨重的东西。
【问题讨论】:
-
@Blender 不幸的是,这不起作用。
Counter( [1, 1] ) <= Counter( [1, 2] )计算结果为True。大概是因为Counter.__sub__只保留正数。 -
@svk:啊,你是对的。我认为有一些重载的运算符可以让你这样做,但事实并非如此。
-
multiset 的任何选项都可用?