我正在寻找类似的内容: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", []))
答案 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()
function和next()
,它们过滤谓词上的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