python - 如何根据其他列表中的项目匹配来选择子列表中的外部项目?

标签 python

我有一个如下所示的列表:

mylist = [[0, [1, 2]], [1, [1]], [2, [0, 2]], [3, [3]], [4, []], [5, []], [6, [0]]]

内部列表为[1, 2]、[1]、[0, 2]等。

外部列表为[0]、[1]、[2]等。

情况 1:如果内部列表中有一个来自 myOtherlist 的项目,并且不与其他号码共享此内部列表,则获取外部项目。就像下面这个:

输入:

myOtherlist = [2, 3]

输出:

outer_item_list = [3]

情况 2:如果内部列表包含 myOtherlist 中的所有项目,则获取外部项目,当然,如果 myOtherlist 中的其中一项单独存在于某处其他在 mylist 中。就像下面这个:

输入:

myOtherlist = [0, 2]

输出:

outer_item_list = [2, 6]

情况 3:如果内部列表具有来自 myOtherlist 的一项,并且该项目在内部列表中单独存在,则获取外部项目。就像下面这个:

输入:

myOtherlist = [0]

输出:

outer_item = [6]

我的代码如下所示:

outer_item_list = []

for number in list:
    for inner in mylist:
        if number in inner[1] and len(inner[1]) == 1:
            fetch_outer_number = inner[0]
            outer_item_list.append(fetch_outer_number)
            print(outer_item_list)

我想我已经成功完成了案例 3​​,但我需要一些关于案例 1 和案例 2 的帮助。

注意:mylist 是所有 3 种情况的通用输入。

最佳答案

您可以迭代 mylist 并检查第二个子列表中的所有元素是否在 myOtherlist 中可用:

def find_items(mylist, myOtherlist):
    outer_item = []
    for x, y in mylist:
        if y and all(z in myOtherlist for z in y):
            outer_item.append(x)          
    return outer_item

用法:

>>> mylist = [[0, [1, 2]], [1, [1]], [2, [0, 2]], [3, [3]], [4, []], [5, []], [6, [0]]]
>>> find_items(mylist, [2, 3])
[3]
>>> find_items(mylist, [0, 2])
[2, 6]
>>> find_items(mylist, [0])
[6]

关于python - 如何根据其他列表中的项目匹配来选择子列表中的外部项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56465450/

相关文章:

python - 关于vim的使用,何时插入注释字符(如#)

python - 根据条件删除行组

python - ('foo' , 'bar' )[sum(arr)%2] 是什么意思?

python - Flower UI 不显示 celery 工作人员和任务

python - 一些不尊重 Series 子类中的自定义属性的操作

python - 尝试同时求解微分方程

python - 分页如何在 Google Cloud Storage Python 客户端库中的 list_blobs 函数中工作

python - 如何在不引起错误的情况下比较值

Python NLTK Brill Tagger 没有 SymmetricProximateTokensTemplate、ProximateTokensTemplate、ProximateTagsRule、ProximateWordsRule

python - 如何使用正则表达式删除括号内的文本?