gpt4 book ai didi

python - 使用列表列表过滤列表列表

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:34 25 4
gpt4 key购买 nike

我有两个列表列表,一个包含所有记录,例如[['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk'], ['cereal', 'skittles']] 一个包含规则 [['milk', 'eggs'], ['milk','ham']]

我正在尝试通过 list_of_rules 过滤记录,但是,我想捕获 [['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk' ]] 尽管它不完全匹配 [['milk', 'eggs'], ['milk','ham']] 顺序和额外的项目。

records = [['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk'], ['cereal', 'skittles']]

list_of_rules = [['milk', 'eggs'], ['milk','ham']]

# this list comprehension only filters for exact matches

results = [[x for x in L if x in records] for L in list_of_rules]


# expected output

print(results)
>>[['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk']]

非常感谢任何和所有建议。

最佳答案

你可以使用这个列表理解:

records = [['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk'], ['cereal', 'skittles']]

list_of_rules = [['milk', 'eggs'], ['milk','ham']]

results = [L for L in records if any(set(R).issubset(L) for R in list_of_rules)]

print(results) # => [['eggs', 'milk', 'butter'], ['ham', 'spam', 'milk']]

它循环每个记录列表 L 并检查是否存在至少一个规则列表 R (使用内置函数 any )使得R 包含在 L 中(使用设置方法 issubset )。

关于python - 使用列表列表过滤列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com