繁体   English   中英

如何检查 Python 中另一个元素列表中的元素是否等于 none?

[英]How can I check if an element is equal to none in another list of elements in Python?

我刚刚开始使用 Python,我很难用if语句弄清楚一些事情。

假设我有以下两个列表:

one = [{'id': '2'}, {'id': 3}]
two = [{'id': '4'}, {'id': 5}]

我想遍历one并比较idonetwo 基本上,我想要找到的是这两个列表是否共享一个具有相同值的id 在此示例中,我的代码应返回Not found ,因为 2 与 4 和 5 不同,而 3 与 4 和 5 不同。

基本上,我想做的是:检查2是否等于任何idtwo ,如果不是,打印一些东西,然后与3相同。 在伪代码中是这样的:如果two EQUAL TO 2中没有id ,则打印一些东西。 然后与3相同,依此类推。

我尝试了以下方法:

for x in one:
  for y in two:
    if x['id'] != y['id']:
      print('Not found')

这段代码的问题是它将返回四个Not found ,因为它正在比较每个元素。 相反,我只想检查是否有23 in two

请注意,您的代码中出现了错误,您使用字符串作为第一个 ID,使用 integer 作为第二个 ID。

有几种方法可以检查 python 中的交叉点。这是一篇介绍几种不同方法的文章。 我喜欢使用set()类型,因为它有一个有用的内置方法,叫做intersection 集合与列表有点不同,因为它们不能包含重复项并且会自动排序。

例如,如果您有一个包含 1 和 2 的集合,即set1 = set([1,2]) ,您可以使用set1.intersection([2])检查 2 是否在该集合中。

以下是我将如何在您的情况下实现此类功能(所有键均为整数):

one = [{'id': 2}, {'id': 3}]
two = [{'id': 4}, {'id': 5}]

def flatten(list_of_dicts):
    return [item['id'] for item in list_of_dicts]

intersecting_ids = set(flatten(one)).intersection(flatten(two))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM