如何将列表的所有可能组合放入字典中,例如(a,b)和(b,a)?



我的代码有一个问题:

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))

相关内容

  • 没有找到相关文章

最新更新