我的代码有一个问题:
from collections import Counter
from collections import defaultdict
from itertools import combinations
def findPairs(pair_counts, n):
pair_counts = dict()
count = Counter(combinations(n, 2))
for key, value in count.items():
pair_counts[key] = value
print(pair_counts)
nums = [2,3,7]
#n = len(nums)
findPairs(pair_counts, nums)
输出如下:
{(2, 3): 1, (2, 7): 1, (3, 7): 1}
但是我希望它给出的输出看起来更像:
{(2, 3): 1, (2, 7): 1, (3, 7): 1, (3,2):1, (7,2):1, (7,3):1)}
Thanks in advance
正如我在评论中提到的,您需要permutations
而不是itertools
中的combinations
。下面的代码可以工作。如果您的目标是简单地获得count的字典,您可以简单地执行dict(Counter(...))
将其转换为字典。
还删除了一些不必要的代码行。
from collections import Counter
from itertools import permutations
def findPairs(n):
###
pair_counts = dict()
count = dict(Counter(permutations(n, 2)))
print(count)
nums = [2,3,7]
findPairs(nums)
# Output
# {(2, 3): 1, (2, 7): 1, (3, 2): 1, (3, 7): 1, (7, 2): 1, (7, 3): 1}
用排列代替组合
from itertools导入排列count = Counter(permutations(n, 2))