计数器中变量的等级

kyr*_*nia 3 python python-3.x

我将数据存储在计数器中,例如

industries = Counter({'Automotive': 17, 'Commercial Banks': 10, 'Insurance': 4, 'Hospitals': 2, 'Other': 2})
Run Code Online (Sandbox Code Playgroud)

我有兴趣查找特定变量的'index'(即'rank').例如,如果我有兴趣Automotive返回它具有最高密钥,则commercial banks具有第二高.

目前我正在转换为列表,然后查找该项目的索引.例如

industries_list = [key[0] for key in industries.most_common()]
rank_of_automotive = industries_list.index("Automotive")
Run Code Online (Sandbox Code Playgroud)

有没有办法直接从计数器形成这个,而无需转换为列表?

[显然,我知道我当前的代码不处理正确的值相同的变量-即虽然HospitalsOther这两者都具有值2,我可能会返回一个不同的等级为他们.这对我来说不是一个大问题,但如果两者都返回相同的值,也会发现]

Ale*_*der 6

most_common 将为您提供最常见值的排序列表.

>>> industries.most_common()
[('Automotive', 17),
 ('Commercial Banks', 10),
 ('Insurance', 4),
 ('Hospitals', 2),
 ('Other', 2)]
Run Code Online (Sandbox Code Playgroud)

您可以使用它来创建一个字典,将每个行业映射到其排名:

ranking = {pair[0]: rank 
           for rank, pair in enumerate(industries.most_common())}

>>> ranking
{'Automotive': 0,
 'Commercial Banks': 1,
 'Hospitals': 3,
 'Insurance': 2,
 'Other': 4}
Run Code Online (Sandbox Code Playgroud)

请注意,如果值相关,则订单可以是任意的(例如,医院和其他).