python-3.x - pythonic方法来查找具有重复项的列表是否至少包含另一个列表的每个元素的副本
问题描述
嗨,我有两个列表req
,sup
每个列表都可能有重复项,并且 req 可以为空。我想要一种 Pythonic 方法来测试sup
在req
. 作为一个例子,我想要一个包含以下功能的函数:
requirements = [['a','b','b'],['a','c'],[]]
supplys = [['a','b','c'],['b','b','a','c']]
for sup in supplys:
print(sup)
for req in requirements:
print(req)
print(contains(req,sup))
print()
输出:
['a', 'b', 'c']
['a', 'b', 'b']
False
['a', 'c']
True
[]
True
['b', 'b', 'a', 'c']
['a', 'b', 'b']
True
['a', 'c']
True
[]
True
我目前所拥有的似乎很冗长,我觉得应该有一种方法可以作为一个单一的班轮来做到这一点。
def contains(req,sup):
flag = True
for letter in set(req):
if self.sup.count(letter) < req.count(letter):
flag = False
return flag
解决方案
对于后来发现这个问题的任何人,这是我能够想到的单线:
all([req.count(letter) <= sup.count(letter) for letter in set(req)])
推荐阅读
- flutter - flutter) 使用 imagePicker 有问题
- firebase - 在使用 Firebase 功能处理来自 Woocommerce 的多个 webhook 时,我应该使用单个云功能还是多个云功能?(网络钩子最佳实践)
- javascript - 为什么我的函数被自己调用
- php - 将值传递给其他实体 Symfony
- android - 启用 compose 会导致构建失败
- swift - 如何从 SWIFT 字典中检索深度嵌套的数据?
- python - python中的Json和请求
- tsql - 天蓝色专用 sql 池 (sqldw) 可序列化表提示语句奇怪的行为
- r - 如何在 Studio 中使用具有字符对象的值创建逻辑参数
- android - 为 Android 编译 Dart