如果字典中存在值,则将其相乘

时间:2018-11-15 21:07:00

标签: python list dictionary probability

我正在尝试计算一些句子概率。

我有一本字典,其中包含一些不同字母的值:

{'a': 0.2777777777777778, 'b': 0.3333333333333333, 'c': 0.3888888888888889}

然后在列表中有单独的句子,例如:

['aabc', 'abbcc', 'cba', 'abcd', 'adeb']

我想做的是一些概率计算,以便它搜索列表中的句子并将其值相乘 aabc将是0.2777*0.2777*0.3333*0.388888

我将如何在此列表中搜索每个独立的字符串并进行乘法运算?

4 个答案:

答案 0 :(得分:2)

您可以使用reduce将句子减为最终概率(请注意,如果一个字符没有概率,我只需使用1来相乘):

from functools import reduce

probs = {'a': 0.2777777777777778, 'b': 0.3333333333333333, 'c': 0.3888888888888889}
sentences = ['aabc', 'abbcc', 'cba', 'abcd', 'adeb']

result = [reduce(lambda acc, curr: probs.get(curr, 1) * acc, s, 1) for s in sentences]
print(result) 
# [0.010002286236854138, 0.004667733577198597, 0.0360082304526749, 0.03600823045267489, 0.09259259259259259]

答案 1 :(得分:1)

这是一种非常简单的方法:

<table id="productTable" border="1">
    <thead>
    <tr>
        <th>PID</th>
        <th>Select Product1</th>
        <th>Select Product2</th>
    </tr>
    </thead>
    <tbody>
      <tr>
         <td>100</td>
         <td>
                           <select class="product1" > 
                           <option value=""></option>
                    </select>
                </td>
                 <td>
                           <select class="product2" >        
                            <option value=""></option>
                    </select>
                </td>
      </tr>
     ......

编辑:

如果我们要检查字典中是否有值,我们可以执行以下操作并改用values = {'a': 0.2777777777777778, 'b': 0.3333333333333333, 'c': 0.3888888888888889, 'd':0.1234, 'e':0.5678} strings = ['aabc', 'abbcc', 'cba', 'abcd', 'adeb'] for string in strings: product = 1 for char in string: product *= values[char] print(product)

unk

答案 2 :(得分:0)

您可以使用double for循环。外部for会遍历句子列表,内部for会遍历句子中的每个字母。 Python for循环语法为for item in iterable_object: <code to run>。尝试使用此信息,看看可以得到多远。

答案 3 :(得分:0)

您可以使用列表理解和for循环来执行此操作。

def prob(string, prob):
    out = 1;
    probs = [prob[char] for char in string]
    for x in probs:
        out *= x;
    return out

prob是概率的字典,string是字符串。 in遍历字符串中的每个字符。