Python:如何检查列表中许多字典中的列表中是否存在数组中的一组坐标?

时间:2012-12-28 12:06:11

标签: python

很抱歉,如果这听起来非常令人困惑,但基本上我有一个存储2D坐标列表的两列数组:

array([[ 0.31730234,  0.73662906],
   [ 0.54488759,  0.09462212],
   [ 0.07500703,  0.36148366],
   [ 0.33200281,  0.04550565],
   [ 0.3420866 ,  0.9425797 ],
   [ 0.36115391,  0.16670599],
   [ 0.95586938,  0.52599398],
   [ 0.13707665,  0.6574444 ],
   [ 0.77766138,  0.56875582],
   [ 0.79618595,  0.7139309 ]])

我有一个词典列表,在每个词典中都有一个名为“坐标”的键下这些坐标的随机组合列表。

如何创建一个函数,如果给出一组随机坐标,检查这些坐标是否存在于任何字典中,然后返回其当前字典的索引?

显然,参数是字典列表(因为我实际上有多个列表)和数组中的坐标id。每次我尝试使用任何函数或枚举或查找时,都会出现语法错误 - 例如:

def whichcluster(list,coordinate_id):
.....:     for elem in list:
.....:         if any(x in elem['coordinates'] for coordinate_id):
.....:             return list.index(elem)
.....:         else:
.....:             return False

为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

您的代码有四个问题

  • 您的生成器表达式输入任何错误。它应该是any(x in elem['coordinates'] for x in coordinate_id)
  • 你不需要使用list.index(elem)来获取索引,而是在循环时使用enumerate函数来获取索引元素`for index,elem in enumerate(list):
  • 在循环return list.index(elem)内使用返回会在第一次点击时过早返回。您可能会错过任何后续比赛。您需要创建一个生成器
  • 不要使用保留/内置名称作为变量名称,例如使用list更合适的名称来代替coord_list

答案 1 :(得分:1)

你的理解是错的,应该是:

if any(x in elem['coordinates'] for x in coordinate_id):
    ...

list是一个类型名称,不要将其用作变量名称。