计算字典,python的键

时间:2017-07-28 13:08:03

标签: python dictionary for-loop count increment

//编辑 - 所以我试图找到一对总和,但不包括重复的对,如(n1,n2)和(n2,n1)[其中一个要被忽略]

所以这是我的代码的一部分,我想在这里实现的是

  1. 来自输入 - > number_list of int split() - >双循环
  2. 每次在count_dict 中找到相同的[sum]键时,
  3. count + = 1
  4. count_dict [sum] =计算记录了多少相同和不同的int对的记录。
  5. 但我似乎无法弄清楚如何正确递增计数变量 请指教,谢谢!

    count=1
    for n1 in number_list:
        for n2 in number_list:
    
            sum=n1+n2
    
            if (n2,n1) not in pair_dict and n1!=n2:
                pair_dict[(n1,n2)]=sum
                sum_dict[sum]=(n1,n2)
                if sum_dict[sum]==(n2,n1):
                    count_dict[sum]=count
                else:
                    count+=1
                    count_dict[sum]=count
            else:
                pass
    

    测试用例

    2 1 3 4

      
        

    5

      

    10 20 40 45 5 15 25

      
        

    25

      

    24 23 8 29 31 5

      
        

      

2 个答案:

答案 0 :(得分:1)

从问题的上半部分看,您似乎正在尝试查找列表中每对元素的总和,并计算每次总和发生的次数。

from itertools import combinations
from collections import Counter

number_list = [1, 2, 3, 4, 5]
sum_counter = Counter(map(sum, combinations(number_list, 2)))

print(sum_counter)
# {3: 1, 4: 1, 5: 2, 6: 2, 7: 2, 8: 1, 9: 1}

通过更改2的句子中的combinations,可以很容易地推广计算三元组,四元组等的总和。

答案 1 :(得分:-1)

试试这个:

count=1
for n1 in number_list:
    for n2 in number_list:

        sum=n1+n2

        if (n2,n1) not in pair_dict and n1!=n2:
            pair_dict[(n1,n2)]=sum
            sum_dict[sum]=(n1,n2)
            if sum_dict[sum]==(n2,n1):
                count_dict[sum]=count
            else:
                count+=1
                count_dict[sum]+=count
        else:
            pass