2017-09-14 73 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 
相关问题