Python 检查元组的键在dict中重复了多少次?

Python 检查元组的键在dict中重复了多少次?,python,dictionary,tuples,Python,Dictionary,Tuples,我有一本结构如下的词典: {'key1','key2':50,'key3','key4':70,'key1','key5':90….} 例如,我想在字典中计算“key1”作为键元组中的第一个单词出现的次数 我开始编写下面提到的代码,但无法进一步思考: count = 0 leng = 0 i = 0 for key1,key2 in range(1,len(bigrams)): count = count +1 leng = leng + (big

我有一本结构如下的词典:

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

例如,我想在字典中计算“key1”作为键元组中的第一个单词出现的次数

我开始编写下面提到的代码,但无法进一步思考:

  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)
有没有关于如何继续的建议?

我会使用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
您可以使用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})

如果需要,可以使用dictCounter将cast counter对象键入dict…

下面的一个给出了所需的计数:

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
如果k[0]='key1'假设您的dict被称为x,则x中k的单向sum1。尽管@robs的方式似乎更简洁。
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