簡體   English   中英

Python字典矩陣“表示形式”

[英]Python dictionaries matrix “representation”

我在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}

這只是列表上的一項操作,因為您只需要單獨處理每一行。 所以

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()}

結果是

{'apple':0.6666666666666666,'cherry':1.0,'banana':0.6666666666666666,'avocado':0.3333333333333333}

這使用collections.Counter來計算每個項目的出現次數。 然后確定最大值,然后除以dict理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM