获取字典列表中重复值的计数

时间:2016-02-16 00:03:25

标签: python dictionary

我有以下字典列表:

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; 。 什么是正确而简单的方法呢?

3 个答案:

答案 0 :(得分:2)

如果您不需要符合条件的字典列表,只需要计算它们的数量,您可以对生成器表达式使用sum调用:

sum(x['Predicate'] == 'I-s' and x['S_length'] == '5.1' for x in my_list)

这是有效的,因为Python的bool类型继承自int,其实例TrueFalse具有整数值10分别。

答案 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'
]