0

这是提供的数据。

# Data on probability of expansion success by country estimates
success_estimates = {
    'Australia': [0.6, 0.33, 0.11, 0.14],
    'France': [0.66, 0.78, 0.98, 0.2],
    'Italy': [0.6],
    'Brazil': [0.22, 0.22, 0.43],
    'USA': [0.2, 0.5, 0.3],
    'England': [0.45],
    'Canada': [0.25, 0.3],
    'Argentina': [0.22],
    'Greece': [0.45, 0.66, 0.75, 0.99, 0.15, 0.66],
    'Morocco': [0.29],
    'Tunisia': [0.68, 0.56],
    'Egypt': [0.99],
    'Jamaica': [0.61, 0.65, 0.71],
    'Switzerland': [0.73, 0.86, 0.84, 0.51, 0.99],
    'Germany': [0.45, 0.49, 0.36]
}

这是练习题和我最接近但不成功的代码的副本。

使用列表推导,编写一个脚本来创建一个名为 sum_squares_list 的列表列表,其中列表的每个元素都是一个包含两个项目的列表 [国家名称,值]。列表中的值项应该是该国家成功估计值的平方和。例如,sum_squares_list 的一个元素应该是牙买加,其中两项列表是 [Jamaica, 1.2987](因为 1.2987 = 0.61^2 + 0.65^2 + 0.71^2)。

我最近但不正确的代码

sum_squares_list = [[i, sum(success_estimates[i])] for i in success_estimates]
sum_squares_list

[['Australia', 1.1800000000000002],
 ['France', 2.62],
 ['Italy', 0.6],
 ['Brazil', 0.87],
 ['USA', 1.0],
 ['England', 0.45],
 ['Canada', 0.55],
 ['Argentina', 0.22],
 ['Greece', 3.66],
 ['Morocco', 0.29],
 ['Tunisia', 1.2400000000000002],
 ['Egypt', 0.99],
 ['Jamaica', 1.97],
 ['Switzerland', 3.9299999999999997],
 ['Germany', 1.2999999999999998]]

我在寻找平方和时遇到了很多麻烦。对所有这些值求和很容易,但是在求和之前如何对元素求平方呢?

4

3 回答 3

2

您可以使用生成器表达式来计算每个国家/地区的平方估计之和。

sum_squares_list = [[country, sum(estimate ** 2 for estimate in estimates)] 
                    for country, estimates in success_estimates.items()]
>>> sum_squares_list
[['Australia', 0.5005999999999999],
 ['France', 2.0444],
 ['Italy', 0.36],
 ['Brazil', 0.28169999999999995],
 ['USA', 0.38],
 ['England', 0.2025],
 ['Canada', 0.1525],
 ['Argentina', 0.0484],
 ['Greece', 2.6388],
 ['Morocco', 0.0841],
 ['Tunisia', 0.7760000000000001],
 ['Egypt', 0.9801],
 ['Jamaica', 1.2987],
 ['Switzerland', 3.2183],
 ['Germany', 0.5722]]
于 2021-09-08T02:08:18.063 回答
0

让我们分解一下。我们如何使用列表推导来获取数字列表的平方列表?

list = [0.45, 0.66, 0.75, 0.99, 0.15, 0.66]

squares = [x * x for x in list]

那么我们如何总结呢?

list = [0.45, 0.66, 0.75, 0.99, 0.15, 0.66]

sum_of_squares = sum([x * x for x in list])

我们可以省略括号。

list = [0.45, 0.66, 0.75, 0.99, 0.15, 0.66]

sum_of_squares = sum(x * x for x in list)

现在,您只需将其应用于此问题。success_estimates您可能会发现处理字典的键列表很有帮助。

于 2021-09-08T02:11:02.523 回答
0

您可以使用字典.items()迭代,然后对字典键中的项目的平方求和;例如,

[(k, sum([x * x for x in v])) for k, v in success_estimates.items()]
于 2021-09-08T02:06:30.143 回答