如何检查python字典值中的任何数组中是否存在值?

时间:2015-10-25 21:28:39

标签: python

我的字典看起来像:

A = {
    (0,0): [(0, 0), (1, 2), (3, 2)],
    (1,1): [(2, 0)],
    (10,1): [(0, 0), (2, 1)]
}

给定一个新元组,如何检查字典值中任何数组中是否存在元组(x0, y0)

我试图遍历列表

for i, v in iteritems(A):
   if (x0, y0) in v:
       return True

有没有办法让这个单线解决方案?

2 个答案:

答案 0 :(得分:2)

使用any() function并将循环放在生成器表达式中:

return any((x0, y0) in v for v in A.itervalues())

any()函数一次一步地使生成器前进,并在True测试返回true后立即返回(x0, y0) in v(提前退出)。这意味着只完成最小工作量。

演示:

>>> A = {
...     (0,0): [(0, 0), (1, 2), (3, 2)],
...     (1,1): [(2, 0)],
...     (10,1): [(0, 0), (2, 1)]
... }
>>> x0, y0 = 2, 0
>>> any((x0, y0) in v for v in A.itervalues())
True
>>> x0, y0 = 2, 42
>>> any((x0, y0) in v for v in A.itervalues())
False

答案 1 :(得分:0)

您可以执行以下操作:

do {
    $token_id = makeRandomToken();
    $token_key = makeRandomTokenKey();
} while (User::where("token_id", "=", $token_id)->where("token_key", "=", $token_key)->first() instanceof User);