私はこれに似たデータセットを扱っています:
animals = {
"antelope": {
"latin": "Hippotragus equinus",
"cool_factor": 1,
"popularity": 6
},
"ostrich": {
"latin": "Struthio camelus",
"cool_factor": 3,
"popularity": 3
},
"echidna": {
"latin": "Tachyglossus aculeatus",
"cool_factor": 5,
"popularity": 1
}
}
私が探しているのは、人気度で重み付けされた「最もクールでない」動物と「最もクールな」動物を見つけることです。
> min_cool_weighted(animals)
"echidna"
> max_cool_weighted(animals)
"ostrich"
最初に思いついた解決策は、3 つの配列 ( keys
、cool_factors
、およびpopularities
) を作成し、辞書をループして、すべての値を 3 つの配列にプッシュし、次に各値で 4 番目の配列を作成しweighted[i] = cool_factor[i] * popularity[i]
、最小/最大を取得してグラブすることです。キー配列からの対応するキー。ただし、これはあまり Pythonic ではないようです。
より良い、より表現力豊かな方法はありますか?