2024-05-15 11:53:30 发布
网友
我有一份清单:
X = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery']
想要输出:
另一种使用stdlib的方法:
In [6]: from collections import Counter In [7]: l = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery'] In [8]: dict(Counter(l).items()) Out[8]: {'cztery': 1, 'dwa': 2, 'raz': 3, 'trzy': 2}
您可以使用dictionary comprehension:
>>> lst = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery'] >>> {x:lst.count(x) for x in set(lst)} {'raz': 3, 'cztery': 1, 'dwa': 2, 'trzy': 2} >>>
或者,您可以使用^{}:
第二个解决方案可能是您想要的,因为它做的事情与理解相同,效率更高,并且还使用了Counter类,该类附带了很多很棒的工具(例如^{}和^{})。在
Counter
只是用Brian建议的groupby来演示这个版本。在
groupby
import itertools data = ['raz', 'dwa', 'raz', 'trzy', 'dwa', 'raz', 'trzy', 'cztery'] print({k:len(list(v)) for k, v in itertools.groupby(sorted(data))})
另一种使用stdlib的方法:
您可以使用dictionary comprehension:
或者,您可以使用^{} :
^{pr2}$第二个解决方案可能是您想要的,因为它做的事情与理解相同,效率更高,并且还使用了} 和^{} )。在
Counter
类,该类附带了很多很棒的工具(例如^{只是用Brian建议的
groupby
来演示这个版本。在相关问题 更多 >
编程相关推荐