使用函数返回字典中的键计数

时间:2014-09-16 20:38:13

标签: python dictionary

对于Python来说,我是新手,让我们开始吧。

现在已经不在了,我正在努力解决Python中的字典/列表问题。我的任务是编写一个带有两个参数的函数,一个是字典,另一个是键列表。我需要返回此列表中有多少键出现在字典中的计数。以下是我到目前为止的情况:

def members({'name': 'Scott', 'title': 'esquire'},['name', 'age', 'title'])
    total_num = 0
    for key in dict:
      if name in members:
        total_num += 1
      elif age in dict:
        total_num += 1
      elif title in members:
        total_num += 1
      else:
        break
      print(total_num)

我知道我的语法可能已经过时了,但我很好奇我是否走在正确的轨道上。任何帮助或指导将不胜感激。

干杯!

3 个答案:

答案 0 :(得分:2)

或者你可以明确地做..

def members(a_dict, a_list):
    total_num = 0
    for a_key in a_dict.keys():
        if a_key in a_list:
            total_num += 1
    return total_num
D = {'name': 'Scott', 'title': 'esquire'}
L = ['name', 'age', 'title']
print members(D,L)

>> 2

答案 1 :(得分:1)

您可以使用列表推导来检查列表中的每个元素是否是字典中的键,然后只检查生成列表的长度。

>>> d = {'name': 'Scott', 'title': 'esquire'}
>>> l = ['name', 'age', 'title']
>>> len([i for i in l if i in d])
2

作为一项功能

def keysInDict(d, l):
    return len([i for i in l if i in d])

>>> keysInDict({'name': 'Scott', 'title': 'esquire'}, ['name', 'age', 'title'])
2

答案 2 :(得分:0)

在这里你有解释的方法。

dictionary = {'name': 'Scott', 'title': 'esquire'}
list_ = ['name', 'age', 'title']

def members(dictionary, list_):
    # Define counter
    cant = 0
    # Iter over all list items and check if appear in  dictionaty.keys().
    for elem in list_:
        # Check if elem in dictionay.keys()
        if elem in dictionary.keys():
            # If true increment counter
            cant = cant + 1

    # Finally return cant
    return cant


print(members(dictionary, list_))

如果列表在哪里:

,则与其他答案存在微小但重要的差异
['name', 'age', 'title', 'name']

mlwn的答案结果仍然是2.虽然根据OP的问题计算此列表中有多少键出现在字典中是不正确的。应该是3。