Python数组最小化值



我正在尝试将数组的值更改为较小的数字,如

list = [1,3,7,3]进入list = [1,2,3,2]

我已经有了几行代码来保持它的有序性。

def sortItems(list):
counts = collections.Counter(list)
sortedlist = sorted(list, key=counts.get, reverse=True)
return sortedlist

已经爬遍了W3Schools和其他论坛,但仍然不确定

l = [1, 3, 7, 3] 
unique_keys = set(l)
mappings = {key: val for val, key in enumerate(sorted(unique_keys), 1)}
print(list(map(mappings.get, l)))

订单由sorted()保存。

(此答案处理注释中的信息。(

对于一个高性能的实现,对键进行计数、排序,然后重复和平面映射。

from collections import Counter
from itertools import repeat
def flatmap_repeat_sort_count(xs):
counts = Counter(xs)
keys = sorted(counts.keys())
return [
x
for i, k in enumerate(keys, start=1)
for x in repeat(i, counts[k])
]

示例运行:

>>> flatmap_repeat_sort_count([1, 3, 7, 3])
[1, 2, 2, 3]
>>> flatmap_repeat_sort_count([7, 1, 3, 1])
[1, 1, 2, 3]

最新更新