我想将这些值排在字典中。
例如,我有这本词典:{"A": 10, "B: 3, "C": 8, "D": 3, "E": 2}
结果应如下所示:{"E": 1, "B": 2, "D": 2, "C": 4, "A": 5}
请注意,D
被排名为第四,因为B
和D
位于 two 的位置。因此,没有位置三。
其他主题已经提供了类似的解决方案,但他们没有考虑传统方式的前例:Adding a rank to a dict in python和Python Ranking Dictionary Return Rank
答案 0 :(得分:1)
首先根据数字按升序对数据进行排序,如此
>>> rank, count, previous, result = 0, 0, None, {}
现在,对于每个处理过的元素,
如果它与前一个元素不同,那么等级应该增加到现在处理的相似元素的数量
如果相同,则只需将当前元素计为类似元素
要实现这一点,请初始化一些变量,例如
rank
然后继续检查当前元素是否不等于前一个元素,如果是,则将>>> for key, num in s_data:
... count += 1
... if num != previous:
... rank += count
... previous = num
... count = 0
... result[key] = rank
增加相似元素出现的次数。
result
现在,>>> result
{'D': 2, 'C': 4, 'E': 1, 'B': 2, 'A': 5}
将获得您想要的结果。
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredShoppingList = (ArrayList<ShoppingListModel>)filterResults.values;
if (filterResults.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}