我有一个如下所示的列表:
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/