我将数据存储在计数器中,例如
industries = Counter({'Automotive': 17, 'Commercial Banks': 10, 'Insurance': 4, 'Hospitals': 2, 'Other': 2})
我有兴趣查找特定变量的'index'(即'rank')。例如,如果我感兴趣的是Automotive
返回它具有最高密钥,则commercial banks
具有第二高的密钥。
目前我正在转换为列表,然后查找该项目的索引。 e.g。
industries_list = [key[0] for key in industries.most_common()]
rank_of_automotive = industries_list.index("Automotive")
有没有办法直接从计数器中执行此操作而无需转换为列表?
[显然,我知道我当前的代码没有正确处理相同值的变量 - 即尽管Hospitals
和Other
都有值2,但我可以返回不同的等级对他们来说这对我来说不是一个大问题,但如果两者都返回相同的值也会发现]
答案 0 :(得分:5)
most_common
会为您提供最常见值的排序列表。
>>> industries.most_common()
[('Automotive', 17),
('Commercial Banks', 10),
('Insurance', 4),
('Hospitals', 2),
('Other', 2)]
您可以使用它来创建一个字典,将每个行业映射到其排名:
ranking = {pair[0]: rank
for rank, pair in enumerate(industries.most_common())}
>>> ranking
{'Automotive': 0,
'Commercial Banks': 1,
'Hospitals': 3,
'Insurance': 2,
'Other': 4}
请注意,如果值相关,则订单可以是任意的(例如,医院和其他)。
答案 1 :(得分:0)
以下是一种较短的方法:
mapping = dict((item[1][0], item[0]) for item in enumerate(industries.most_common()))
print(mapping["Automotive"])