为了账号安全,请及时绑定邮箱和手机立即绑定

检查多维列表的一部分是否在单独的多维列表中

检查多维列表的一部分是否在单独的多维列表中

千巷猫影 2022-10-18 15:04:50
这是一些示例代码。list1 = [['one','a'],['two','a'],['three','a'],['four','a']]list2 = [['three','b'],['four','a'],['five','b']]for l in list1:    if l not in list2:        print(l[0])以及此代码的输出。onetwothree因为['four','a']确实出现在两个列表中。我要做的是检查第一个列表中每个条目的第一项是否出现在第二个列表中,我尝试了以下变体list1 = [['one','a'],['two','a'],['three','a'],['four','a']]list2 = [['three','b'],['four','a'],['five','b']]for l in list1:    if l[0] not in list2:        print(l[0])但是,该代码返回onetwothreefour尽管“三”和“四”都出现在第二个列表中。我之前使用过不同的方法来查找仅出现在一对列表中的一个中的值,然后用它来制作一个包含所有可能值且没有重复的主列表,我相信使用这种方法应该可以做到这一点,但是语法对我来说是个谜。我在这里哪里出错了?
查看完整描述

2 回答

?
Cats萌萌

TA贡献1805条经验 获得超9个赞

您可以使用not any(),然后检查理解中的特定要求:


list1 = [['one','a'],['two','a'],['three','a'],['four','a']]

list2 = [['three','b'],['four','a'],['five','b']]


for l in list1:

    if not any(l[0] == l2[0] for l2 in list2):

        print(l[0])


# one

# two

如果顺序无关紧要,您也可以使用集合:


list1 = [['one','a'],['two','a'],['three','a'],['four','a']]

list2 = [['three','b'],['four','a'],['five','b']]


set(l[0] for l in list1) - set(l2[0] for l2 in list2)

# {'one', 'two'}


查看完整回答
反对 回复 2022-10-18
?
达令说

TA贡献1821条经验 获得超6个赞

您可以使用set operations


list1 = [['one','a'],['two','a'],['three','a'],['four','a']]

list2 = [['three','b'],['four','a'],['five','b']]


result = set(i[0] for i in list1) - set(i[0] for i in list2)


print(result)


# output {'one', 'two'}


查看完整回答
反对 回复 2022-10-18
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信