2017-09-14 70 views
0

我有以下結構的字典:檢查一個元組的一個鍵在字典中重複了多少次?

{('key1','key2'): 50, ('key3','key4'): 70, ('key1','key5'): 90.....}

我想在我的字典來計算時代「鍵1」的數目,例如出現在關鍵的元組的第一個字。

我開始寫下面提到的代碼,但不能進一步認爲:

count = 0 
    leng = 0 
    i = 0 
    for key1,key2 in range(1,len(bigrams)): 
     count = count +1 
     leng = leng + (bigrams.get((key1,key2),0)) 
    print(count) 
    print(leng) 

任何建議,以我應該如何進行?

+0

單程'總和(1對於k x中如果k [0] ==」 key1')'假設你的字典被稱爲'x'。雖然@robs的方式似乎更簡潔。 –

回答

0

我會使用sum()與發電機表達式來遍歷鍵,每一個測試依次爲:

bigrams = {('key1','key2'): 50, ('key3','key4'): 70, ('key1','key5'): 90} 

def number_of_times_key_appears_as_first_word(key, dictionary): 
    return sum(k[0] == key for k in dictionary) 

assert number_of_times_key_appears_as_first_word('key1', bigrams) == 2 
assert number_of_times_key_appears_as_first_word('key3', bigrams) == 1 
assert number_of_times_key_appears_as_first_word('key2', bigrams) == 0 
1
from collections import defaultdict 

der = {('key1','key2'): 50, ('key3','key4'): 70, ('key1','key5'): 90} 

b = defaultdict(int) 
for item, ler in der: 
    b[item] += 1 
print b   ## defaultdict(int, {'key1': 2, 'key3': 1}) 
print b['key1'] ## [2] 

Python tuple operations and count

0

您可以使用collections.Counter計數的每個部分鍵如下:

from collections import Counter 
dic = {('key1','key2'): 50, ('key3','key4'): 70, ('key1','key5'): 90} 
keys_0 = Counter(key[0] for key in dic.keys()) 
keys_1 = Counter(key[1] for key in dic.keys()) 

# keys_0 = Counter({'key1': 2, 'key3': 1}) 
# keys_1 = Counter({'key2': 1, 'key4': 1, 'key5': 1}) 

Yo u能鍵入鑄造計數器對象到一個字典,如果你想通過使用dict(Counter(...))

0

下面給出一個所要求的計數:

dict1 = {('key1','key2'): 50, ('key3','key4'): 70, ('key1','key5'): 90, ('key3','key1'): 90} 
count = 0 
for keys in dict1.keys(): 
    if 'key1' in keys: 
     if (keys[0] == 'key1'): 
      count = count + 1 
print count 
相關問題