迭代列表后更新字典的值

时间:2017-10-31 15:43:53

标签: python dictionary for-loop tuples

我有以下内容:

tup_list=[("name1",2,3),("name6",54,6),("name4",4,6)]

my_dict={"name1": 0,"name2": 0,"name3": 0,"name4": 0,"name5": 0,"name6": 0}


def checker(tup_list,my_dict):
    for tup in tup_list: 
       if tup[0] in my_dict: 
          my_dict[0]+=1

我希望循环遍历tup_list,如果密钥存在于my_dict中,我想在my_dict中为与该键相关联的值添加+1。我收到错误,我不确定如何最好地解决这个问题。

1 个答案:

答案 0 :(得分:1)

您收到错误因为当您这样做时:

for tup in tup_list: 
   if tup[0] in my_dict: 
      my_dict[0]+=1  #first check what you are increasing

尝试print(my_dict[0])你得到了你期待的东西吗?

所以你正在增加价值,但你在哪里存储变化的东西?为此,您必须告诉字典保存更新的键值。

而不是:

  my_dict[0]+=1

使用:

my_dict[tup[0]]+=1

my_dict[item[0]]=value+1   #if you are iterating over dict 

试试这个

def checker(tup_list,my_dict):
    for tup in tup_list:
        if tup[0] in my_dict:
            my_dict[tup[0]]+=1
    return my_dict

print(checker(tup_list,my_dict))
  

详细解决方案:

tup_list=[("name1",2,3),("name6",54,6),("name4",4,6),]

my_dict={"name1": 0,"name2": 0,"name3": 0,"name4": 0,"name5": 0,"name6": 0}


    def checker(tup_list,my_dict):
        for item in tup_list:
            for key,value in my_dict.items():
                if item[0]==key:
                    my_dict[item[0]]=value+1
        return my_dict

print(checker(tup_list,my_dict))

输出:

{'name4': 1, 'name3': 0, 'name6': 1, 'name5': 0, 'name1': 1, 'name2': 0}