Skip to main content
 首页 » 编程设计

python之使用直方图对列表进行排序

2025年05月04日14傻小

给定一个作为字典的直方图,根据字典中定义的频率对仅包含字典中的元素的列表进行排序的最 pythonic、“包含电池”的方法是什么?

字典的键(以及列表中隐含的值)是字符串,频率存储为整数。

我只对 python2 解决方案感兴趣,但欢迎您也编写一个 python 解决方案,这样其他人也可以从中受益(在未来)。

请您参考如下方法:

>>> inList = [1,2,3,4,5] 
>>> inDict = {1:5, 2:2, 3:4, 4:1, 5:3} 
>>> sorted(inList, key=lambda x: inDict.get(x,0)) 
[4, 2, 5, 3, 1] 

这也有利于对不在字典中的元素进行排序,就好像它在值为 0 的字典中一样,而不是仅仅引发 KeyError

sorted() 函数有一个可选参数“key”。此参数指定一个参数的函数,用于从每个列表元素中提取比较键。此比较键用于确定元素之间的顺序。