簡體   English   中英

使用函數返回字典中的鍵計數

[英]Using a function to return a count of keys within a 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)

我知道我的語法可能還差得遠,但是我很好奇我是否在正確的軌道上。 任何幫助或指導,將不勝感激。

干杯!

或者你可以明確地做..

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

您可以使用列表推導來檢查列表的每個元素是否是字典中的鍵,然后只需檢查生成的列表的長度即可。

>>> 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

在這里,您有如何做的解釋。

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。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM