我有以下字典列表:
Predicate : I-s
在上述数据中,我需要找到S_Length : 5.1
的所有 WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
val.mWindowHeight = metrics.heightPixels;
val.mWindowWidth = metrics.widthPixels;
。
什么是正确而简单的方法呢?
答案 0 :(得分:2)
如果您不需要符合条件的字典列表,只需要计算它们的数量,您可以对生成器表达式使用sum
调用:
sum(x['Predicate'] == 'I-s' and x['S_length'] == '5.1' for x in my_list)
这是有效的,因为Python的bool
类型继承自int
,其实例True
和False
具有整数值1
和0
分别。
答案 1 :(得分:1)
您可以使用列表复制:
mylist = [{'S_Length': '5.1', ...]
result = [x for x in mylist if x['Predicate'] == 'I-s' and x['S_Length'] == '5.1']
## in this case, len(result) == 3
或者如果您只需要总计数而不是实际列表:
ct = len([x for x in mylist if x['Predicate'] == 'I-s' and x['S_Length'] == '5.1'])
答案 2 :(得分:0)
dicts = [{'S_Length': '5.1', 'S_Width': '3.5', ..... }, { ...]
print [
d
for d in dicts
if d.get('Predicate') == 'I-s' and d.get('S_Length') == '5.1'
]