接聽一個Question名單,我結束了,我認爲很可能已經在一個更好的辦法是做解決的迂迴方式有問題,但我是一無所知,排序基於給定的分佈
有兩個列表
percent = [0.23, 0.27, 0.4, 0.1]
optimal_partition = [3, 2, 2, 1]
optimal_partition,是數字8的整數劃分的一成4份
我想排序optimal_partition
,其中,所述百分比分佈相匹配爲最接近儘可能瓦特的方式HICH將意味着,個別分區應符合%的幅度作爲最接近地
所以3 -> 0.4
,2 -> 0.27
和0.23
和1 -> 0.1
所以最終的結果應該是
[2, 2, 3, 1]
我最終的方式解決這個問題是
>>> percent = [0.23, 0.27, 0.4, 0.1]
>>> optimal_partition = [3, 2, 2, 1]
>>> optimal_partition_percent = zip(sorted(optimal_partition),
sorted(enumerate(percent),
key = itemgetter(1)))
>>> optimal_partition = [e for e, _ in sorted(optimal_partition_percent,
key = lambda e: e[1][0])]
>>> optimal_partition
[2, 2, 3, 1]
你可以建議一個更容易解決這個問題的方法?
更容易我的意思是,不需要實現多個排序,並存儲和後來重新排列基於索引。
夫婦的例子:
percent = [0.25, 0.25, 0.4, 0.1]
optimal_partition = [3, 2, 2, 1]
result = [2, 2, 3, 1]
percent = [0.2, 0.2, 0.4, 0.2]
optimal_partition = [3, 2, 2, 1]
result = [1, 2, 3, 2]
定義 – Woot4Moo
@ Woot4Moo 「來解決這個更簡單的方式」:單個排序基於鍵而不是多個排序和存儲和像我的例子 – Abhijit