我有一个很大的字典,如下所示:
data = {'this': [{'DT': 100}], 'run': [{'NN': 215}, {'VB': 2}], 'the': [{'NNP': 6}, {'JJ': 7}, {'DT': 39517}]}
我想要做的是运行会返回的查询,例如,具有两个值的键的数量,在这种情况下,答案是一个,因为'run'
是唯一一个恰好有两个价值{'NN': 215}
& {'VB': 2}
我认为这可以通过正则表达式完成,但无法找到方法。
答案 0 :(得分:2)
这将完成这项工作:
print len( filter( lambda x: len( x ) == 2, data.values() ) )
当项的长度为2时,lambda返回true。filter()
仅选择lambda返回true的项,然后计算filter()
返回的序列的长度。 data.values()
允许我们过滤dict中的值而不是键(这是普通data
给我们的)。由于您只想要计数,所以这些值都是必需的。
答案 1 :(得分:0)
您无需regex
即可实现此目的。正则表达式用于解析字符串。更好的方法是创建一个新列表,将key
的值存储为len() == 2
的列表:
data = {'this': [{'DT': 100}], 'run': [{'NN': 215}, {'VB': 2}], 'the': [{'NNP': 6}, {'JJ': 7}, {'DT': 39517}]}
key_list = [k for k, v in data.items() if len(v) == 2]
# key_list => ['run']
要获取此类值的列表,请将len
称为:
>>> len(key_list)
1
答案 2 :(得分:0)
得到长度并计算所需的长度。
>>> map(len, data.values()).count(2)
1