【问题标题】:For loop on nested dicts嵌套字典上的 for 循环
【发布时间】:2020-11-04 07:00:17
【问题描述】:

我尝试为我的嵌套字典创建 for 循环,但它们无法正常工作。 我的嵌套字典看起来像这样:

mydict = {'a':{'alpha': 2, 'Beta': 6, 'Gamma': 10}, 
        'b' : {'Beta' : 3 , 'Delta': 7, 'Epsilon' : 5}, 
        'c' : {'Epsilon': 4 , 'Zeta' : 1, 'alpha' : 6}}

我想做的是定义一个函数,该函数将字典和单词作为参数。它通过内部字典中的键搜索单词。如果它在内部字典的键中找到单词,它会获取它的值并将其分配给外部字典的键并返回一个新字典。在这个例子中,如果我们搜索 alpha,结果会是这样的:

dict_alpha = {'a': 2,'b' : 0,'c' : 6} 

我的无效代码如下所示:

def counter_finding(corpus, word):
dict_2= {}
for k_1, v_1 in corpus.items():
    for k_2, v_2 in v_1.items():
        if word in key:
            dict_2[k_1] = country_value[v_2]
        else:
            dict_2[k_1] = 0
return dict_2

【问题讨论】:

  • 存在多个语法错误问题。您不能将字典定义为“dict”。将其定义为“dict1”。字典'a'的末尾有一个点。它将被逗号替换。 'counter_finding' 下的整个块将是一个缩进块。
  • 我知道这些是错别字,当我把它们写在这里的时候。但我没有缩进块的错误。该函数只是给了我一个全零值的字典。

标签: python dictionary for-loop


【解决方案1】:

使用简单的迭代和dict.get

例如:

d = {'a':{'alpha': 2, 'Beta': 6, 'Gamma': 10},
        'b' : {'Beta' : 3 , 'Delta': 7, 'Epsilon' : 5}, 
        'c' : {'Epsilon': 4 , 'Zeta' : 1, 'alpha' : 6}}

key = 'alpha'
res = {}
for k, v in d.items():
    res[k] = v.get(key, 0)    # .get() with default value 0
print(res)

输出:

{'a': 2, 'b': 0, 'c': 6}

【讨论】:

    【解决方案2】:
    def counter_finding(dict1, word):
        dict_2= {}
        for k_1, v_1 in dict1.items():
            print (k_1,v_1)
            if word in v_1:
                    dict_2[k_1] = v_1[word]
            else:dict_2[k_1] = 0
        return dict_2
    

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-25
      • 2019-03-29
      • 2022-01-03
      • 1970-01-01
      相关资源
      最近更新 更多