2016-09-19 89 views
-1

我有一個巨大的字典,看起來像這樣的具體數字鍵的數量:Python字典:其值

data = {'this': [{'DT': 100}], 'run': [{'NN': 215}, {'VB': 2}], 'the': [{'NNP': 6}, {'JJ': 7}, {'DT': 39517}]} 

我想這樣做是運行將返回,例如查詢時,按鍵正好用兩個值,在這種情況下,答案是一個因爲'run'是唯一一個與正好兩個值{'NN': 215} & {'VB': 2}

我認爲這可能與正則表達式來完成,但無法找到如何號碼。

+1

RegEx用於解析字符串,而不是任何其他數據類型。 – noahnu

+1

您的字典格式錯誤也請打印出來幫助我們。 – Dan

+1

你有重複鍵'運行',並嘗試使用過濾器,如過濾器(lambda s:len(data [s])== 2,data)來過濾字典 –

回答

2

這將做的工作:

print len(filter(lambda x: len(x) == 2, data.values())) 

當物品的長度爲2 filter()只選擇其中的λ返回true這些項目,然後再算上序列的長度拉姆達返回true由filter()返回。 允許我們過濾字典中的值而不是鍵(這正是我們所知道的)。由於您只需要計數,所有值都是需要的。

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 
0

剛剛得到的長度和計算所需的長度。

>>> map(len, data.values()).count(2) 
1