说我有一个国家名单
l = ['India', 'China', 'China', 'Japan', 'USA', 'India', 'USA']
Run Code Online (Sandbox Code Playgroud)
然后我有一个独特的国家清单
ul = ['India', 'China', 'Japan', 'USA']
Run Code Online (Sandbox Code Playgroud)
我想按升序对列表中的每个独特国家/地区进行计数。因此输出应如下所示:
Japan 1
China 2
India 2
USA 2
Run Code Online (Sandbox Code Playgroud)
您可以使用集合中的计数器:
from collections import Counter
l = ["India", "China", "China", "Japan", "USA", "India", "USA"]
new_vals = Counter(l).most_common()
new_vals = new_vals[::-1] #this sorts the list in ascending order
for a, b in new_vals:
print a, b
Run Code Online (Sandbox Code Playgroud)
如果您想根据ul列表进行排序,可以使用列表理解,例如:
l = ['India', 'China', 'China', 'Japan', 'USA', 'India', 'USA']
ul = ['India', 'China', 'Japan', 'USA']
result = sorted([(x, l.count(x)) for x in ul], key=lambda y: y[1])
for elem in result:
print '{} {}'.format(elem[0], elem[1])
Run Code Online (Sandbox Code Playgroud)
输出:
Japan 1
India 2
China 2
USA 2
Run Code Online (Sandbox Code Playgroud)
而如果按计数排序后还想按字母排序,可以改为result如下:
result = sorted(sorted([(x, l.count(x)) for x in ul]), key=lambda y: y[1])
Run Code Online (Sandbox Code Playgroud)
输出:
Japan 1
China 2
India 2
USA 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3439 次 |
| 最近记录: |