Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python App Engine,如何检查列表中的所有值是否位于数据存储中的字符串列表中_Python_Google App Engine - Fatal编程技术网

Python App Engine,如何检查列表中的所有值是否位于数据存储中的字符串列表中

Python App Engine,如何检查列表中的所有值是否位于数据存储中的字符串列表中,python,google-app-engine,Python,Google App Engine,如果数据存储中有一个字符串列表,其中包含以下值: a、 b,c 如何将其与列表进行比较,使其仅在字符串列表中的每个值都存在于列表中时才返回true ['a','b']将返回false ['a','b','c']将返回true ['a','b','c','d','e']将返回true 这是单独使用GQL实现的还是我需要拉出字符串列表并在其上循环?来自: 查询无法比较两个列表值。如果不分别测试每个元素的成员资格,就无法测试两个列表是否相等 所以我猜你的比较也不可能直接进行 使用集合进行比较可能比在列

如果数据存储中有一个字符串列表,其中包含以下值:

a、 b,c

如何将其与列表进行比较,使其仅在字符串列表中的每个值都存在于列表中时才返回true

['a','b']将返回false

['a','b','c']将返回true

['a','b','c','d','e']将返回true

这是单独使用GQL实现的还是我需要拉出字符串列表并在其上循环?

来自:

查询无法比较两个列表值。如果不分别测试每个元素的成员资格,就无法测试两个列表是否相等

所以我猜你的比较也不可能直接进行

使用集合进行比较可能比在列表上循环更有效。

来自:

查询无法比较两个列表值。如果不分别测试每个元素的成员资格,就无法测试两个列表是否相等

所以我猜你的比较也不可能直接进行


使用集合进行比较可能比在列表上循环更有效。

您可以将列表按排序方式序列化为单个StringProperty。根据StringListProperty的内容,这可能与逗号分隔的值一样简单


或者,您可以使用md5校验和之类的东西来减少存储和筛选的字符串的长度。

您可以将列表按排序方式序列化为单个StringProperty。根据StringListProperty的内容,这可能与逗号分隔的值一样简单


或者,您可以使用md5校验和之类的东西来减少存储和筛选的字符串的长度。

这不是直接可能的。您可以使用多个相等筛选器,查询将只匹配列表中至少包含这些项的实体(例如,“其中foo='a'和foo='b'”仅当foo是至少包含'a'和'b'的列表时才会匹配)。如果在不使用不等过滤器或排序顺序的情况下执行此操作,数据存储将使用内置的合并联接策略来满足您的查询


然而,非规范化将提供更稳健的解决方案。例如,如果将列表序列化为单个字符串,只需检查是否与该字符串相等。

这不可能直接实现。您可以使用多个相等筛选器,查询将只匹配列表中至少包含这些项的实体(例如,“其中foo='a'和foo='b'”仅当foo是至少包含'a'和'b'的列表时才会匹配)。如果在不使用不等过滤器或排序顺序的情况下执行此操作,数据存储将使用内置的合并联接策略来满足您的查询


然而,非规范化将提供更稳健的解决方案。例如,如果将列表序列化为单个字符串,只需检查是否与该字符串相等。

是否要比较特定实体中的列表,或实际查询包含该列表的实体?查询永远不会返回“true”或“false”,所以很明显,正如前面所说的,您无法在GQL中执行所需的操作。@我的意思是对包含列表的实体进行Wooble查询。我意识到查询不会返回true或false,我的措辞很糟糕。您想比较特定实体中的列表,还是实际查询包含该列表的实体?查询永远不会返回“true”或“false”,所以很明显,正如前面所说的,您无法在GQL中执行所需的操作。@我的意思是对包含列表的实体进行Wooble查询。我意识到一个查询不会返回真或假,我的措辞很糟糕。使用几个相等过滤器会影响性能吗?如果我将列表序列化为一个字符串,当该字符串包含其他字母时,如何检查是否相等?e、 g.“a,b,c”与“a,b,c,d”相比较:使用合并连接策略的查询确实比那些只需要在单个索引中查找的查询慢,但它们可能是在您的用例中唯一的解决方案,因为能够搜索超集基本上需要您使用序列化为字符串的可能子集的列表,随着列表大小的增加,它变得越来越难看。@jond我以为你想搜索具有完全相同列表的实体,而不是超集?使用几个相等过滤器会影响性能吗?如果我将列表序列化为一个字符串,当该字符串包含其他字母时,如何检查是否相等?e、 g.“a,b,c”与“a,b,c,d”相比较:使用合并连接策略的查询确实比那些只需要在单个索引中查找的查询慢,但它们可能是在您的用例中唯一的解决方案,因为能够搜索超集基本上需要您使用序列化为字符串的可能子集的列表,随着列表的增加,它变得越来越难看。@jond我以为你想搜索具有完全相同列表的实体,而不是超集?