如何在字典中找到每个值的阶乘?

问题描述

假设用户输入一个单词,里面有重复的字母。每个重复的字母都将与其计数的阶乘一起存储。例如假设用户输入是 talahasee,它有 3 a 和 2 e,如果我们取它们的阶乘,它们将是 6 和 2。其余的字母将是 1,因为它们出现一次。

如何找到字典中每个值的阶乘?

我当前的代码如下所示。

def pwr():
    word = input("Word: ")
    n = len(word)
    fn = math.factorial(n)
    x = Counter(word)
    for i in x:
        no = math.factorial(i.values())
        print(no)

如果您想知道,我正在制作一个程序,该程序遵循带有重复公式的排列。

解决方法

当我得到你的问题时,你的意思是在 python 字典中找到每个元素的阶乘。 Factorize 与您在示例代码中使用的阶乘不同。因式分解意味着找到一个数的质数。

无论如何,我相信以下代码可以满足您的需求:

from collections import Counter
from math import factorial

def dict_factorial(input_string):
    fd = {}
    d = dict(Counter(input_string))
    for k in d:
        fd[k] = factorial(d[k])
    return fd
print(dict_factorial("Tallahassee"))

输出:{'t': 1,'a': 6,'l': 2,'h': 1,'s': 2,'e': 2}

此外,这个词的正确拼写是佛罗里达州的“Tallahassee”:-)