1

我在 Python 中有一个字典字典。想象一下这个简单的例子。字典:

bin1:{apple,apple,cherry,cherry,cherry,banana,banana,avocado}
bin2:{cucumber,cucumber,cucumber,cucumber,apple}
bin3:{cherry,cherry,banana,banana}

我想计算并存储它(以任何表示,我只是想不出数据结构):

在此处输入图像描述

行代表所有键,列代表所有字典值中所有可用的不同水果

数字意味着:对于每个键,我们计算水果出现在该键上的次数除以其他特定水果出现在该键上最多的次数。

例如:对于 bin1:樱桃出现最多 (3),因此苹果将是 2/3(苹果出现 2 次除以樱桃出现 3 次)等等。

也许我们可以在字典中创建类似字典的东西:

bin1:{apple:2/3,banana:2/3,cherry:1,cucumber:0,avocado:1/3}
bin2:{apple:1/4,banana:0,cherry:0,cucumber:1,avocado:0}
bin3:{apple:0,banana:1,cherry:1,cucumber:0,avocado:0}
4

1 回答 1

0

这只是对列表的操作,因为您只需对每一行单独进行操作。所以

row1 = ["apple", "apple", "cherry", "cherry", "cherry", "banana", "banana", "avocado"]
import collections
row1count = collections.Counter(row1)
max_per_row = max(row1count.values())  # for python2: wrap with float()
{x: y/max_per_row for (x, y) in row1count.items()}

结果是

{“苹果”:0.6666666666666666,“樱桃”:1.0,“香蕉”:0.6666666666666666,“鳄梨”:0.3333333333333333}

这用于collections.Counter计算每个项目的出现次数。然后它确定最大值,并在字典理解中除以它。

于 2018-09-23T04:14:43.750 回答