簡體   English   中英

從python中的嵌套字典打印唯一鍵

[英]Printing unique keys from nested dictionary in python

我有一個帶有 2 個內部字典的字典dict_matches

dict_match的結構如下:

dict_match = {Query_ID:{Function_ID:{DB_ID:[func_ID]}}}

在鍵Query_ID ,我遍歷這些並將它們與完全獨立的 dict query_count_dict中的鍵進行比較,以確定鍵的重疊。

在這個循環中,我還導航到dict_matches中的基本字典,以查看主密鑰與哪些密鑰DB_ID '匹配'。 我的問題是,對應於頂級鍵Query_ID這個較低級別的鍵DB_ID可以重復(我只想查看唯一鍵)。 我嘗試使用 set() 方法,但這實際上將字符串鍵拆分為其字符組件,並為每個較低級別的鍵打印唯一字符。 任何幫助表示贊賞!

見下面的代碼

for k,v in dict_match.items():
    if k in query_count_dict.keys():
        print(k)
        detection_query.append(k)

        print(len(dict_match[k])/int(query_count_dict[k]))

    if type(v) is dict:
        recursive_items(v)

其中 recursive_items 是導航到基本字典的函數:

def recursive_items(dictionary):
    for k, v in dictionary.items():
        if type(v) is dict:
            recursive_items(v)
        else:
            print(set(k))

您可以通過在遞歸函數中傳遞鍵列表來打印所有唯一鍵,以便在導航到基時存儲它們。 然后將其轉換為設置以刪除重復項。

def get_keys(dictionary, keys=[]):
    for k, v in dictionary.items():
        keys.append(k)
        if isinstance(v, dict):
            get_keys(v, keys)
    return set(keys)

dict_match = {'A': {'A': {'B': [0], 'H': [0]}, 'D': {'C': [0], 'A': [0]}},
              'B': {'C': {'A': [0]}, 'G': {'A': [0]}},
              'C': {'A': {'E': [0]}, 'B': {'F': [0], 'A': [0]}, 'C': {'B': [0]}}}

print(get_keys(dict_match))

它只會輸出唯一的鍵:

{'G', 'B', 'E', 'F', 'C', 'H', 'A', 'D'}

暫無
暫無

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

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