Python字典矩阵“表示形式”

时间:2018-09-23 03:38:46

标签: python python-3.x

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

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

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

enter image description here

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

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

例如:对于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}

1 个答案:

答案 0 :(得分:0)

这只是列表上的一项操作,因为您只需要单独处理每一行。所以

app.post('/search, (req, res) => {
    var keyword = req.body.keyword;
    res.redirect('/search/' + keyword);
})

结果是

  

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

这使用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()} 来计算每个项目的出现次数。然后确定最大值,然后除以dict理解。