什么是JavaScript的Array.prototype.find的python等价物?

时间:2018-07-04 18:24:13

标签: python find

我正在寻找类似的内容:python中的find(pred, iter)

obj = { 
         "foo_list": [ 
           {"name": "aaaa", "id": 111},
           {"name": "bbbb", "id": 222},
           {"name": "cccc", "id": 333}
         ]
}

如何:    find(lambda x: x.get("name") == "bbbb", obj.get("foo_list", []))

4 个答案:

答案 0 :(得分:6)

Array.prototype.find()返回具有给定谓词功能的数组中的第一个匹配元素,如果没有匹配,则返回private View.OnClickListener changeLLHeight = new View.OnClickListener() { @Override public void onClick(View v) { RelativeLayout rl = (RelativeLayout)v.getParent(); LinearLayout ll = (LinearLayout)rl.getChildAt(1); TextView tv = (TextView)rl.getChildAt(2); ll.getLayoutParams().height = 20; ll.requestLayout(); tv.setText("Oi!!"); Toast.makeText(getContext(), "", Toast.LENGTH_SHORT).show(); } };

Python具有filter() functionnext(),它们过滤谓词上的iterable,而{{3}}产生可迭代或可选默认值的第一个元素。结合这些,您将获得等同的效果:

undefined

其中next(filter(pred, iter), None) 是可调用的,当元素匹配搜索条件时返回pred

演示:

True

如果删除>>> iterable = [42, 81, 117] >>> parity_odd = lambda v: v % 2 == 1 >>> next(filter(parity_odd, iterable), None) 81 >>> iterable = [42, 2, 4] >>> next(filter(parity_odd, iterable), None) is None True 的第二个参数,则在没有匹配元素的情况下会引发next()异常。

答案 1 :(得分:1)

def find(pred, iterable):
  for element in iterable:
      if pred(element):
          return element
  return None

# usage:
find(lambda x: x.get("name") == "bbbb", obj.get("foo_list", []))

答案 2 :(得分:1)

python:filter == js.findAll

    bb = list(filter(lambda item: item.get("name") == "bbbb", list))
    bb[0]

通过属性值在对象列表中找到对象

答案 3 :(得分:0)

如果您有一个对象列表,则使用 subject = obj.subject body = obj.body for key in kwargs: subject = str(subject).replace([%s] % upper(key), kwargs[key]) body = str(body).replace([%s] % upper(key), kwargs[key]) print(subject, body) next

filter