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

2024-03-29 14:30:41 发布

您现在位置: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

有没有办法让这成为一个单一的解决方案?你知道吗


Tags: intrue列表forreturnif字典数组
2条回答

使用^{} function并将循环放入生成器表达式中:

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

any()函数一次推进生成器一步,并在(x0, y0) in v测试返回true时返回True(提前退出)。这意味着只需完成最小的工作量。你知道吗

演示:

>>> 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

您可以执行以下操作:

value = (2, 1)

found = False
for vl in A.values():
    if value in vl:
        found = True
        break

print found

相关问题 更多 >