簡體   English   中英

如何在 PYTHON 中的列表字典中迭代值

[英]How to iterate values inside dictionary of lists in PYTHON

我有一個需要正常工作的復雜方法,但我似乎無法弄清楚為什么它不能正常工作。

我有一本字典如下:

{'view': ['premium_subscribers', 'premium_content'], 'delete': ['admins', 'normal_content', 'premium_content']}

我需要知道如何通過每個特定的鍵值(數組)一一迭代。 例如:

key = delete

for loop (that iterates 1 by 1 through key "delete's" values
     
     takes "admins" value and does some processing

     in the next iteration takes normal_content and does same processing

     and so on ......
 
     its basically checking for a match to be found.

如果你對我的方法感興趣,我在下面。 它有 3 個字典,並且正在比較它們的鍵值以完成訪問權限。

如果 for 循環正確地遍歷該鍵的每個值,它將按預期開始工作。


def accessPermission(operation, user, object):

domains = dict()
types = dict()
access = dict()

    access = json.load(open("access.txt"))
    domains = json.load(open("domains.txt"))
    types = json.load(open("types.txt"))

    print(types)
    print(access)
    print(domains)

    if operation in access.keys():
        firstkeyvalue = access.get(operation)[0]
        if firstkeyvalue in domains.keys():
            if user in domains.get(firstkeyvalue):
                for access.get(operation)[0] in access:
                    if object in types.values():
                        print("Success")
                else:
                    print("Error: access denied")
            else:
                print("Error: access denied")
        else:
            print("Error: access denied")
    else:
        print("Error: access denied")

似乎您只需要遍歷這樣的元素:

dict = {'view': ['premium_subscribers', 'premium_content'], 'delete': ['admins', 'normal_content', 'premium_content']}

key = 'delete' #set somewhere
for v in dict[key]:
  print(v)
  #do what you need with that

輸出:

admins
normal_content
premium_content

每個 Value 都是一個list ,因此您需要一個額外的loop來迭代每個列表的項目:

data_dict = {'view': ['premium_subscribers', 'premium_content'], 'delete': ['admins', 'normal_content', 'premium_content']}

for key in data_dict:
    
    values = data_dict[key]
    # iterate over list of values
    for v in values:
        
        # Now you have access to each one
        print(v)
    

輸出:

premium_subscribers
premium_content
admins
normal_content
premium_content

暫無
暫無

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

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