我有一个嵌套列表,例如
lst = [(123, 'bbb', 'bcd'), (245, 'brb', 'gsh'), (832, 'sge', 'hsw'),
(832, 'sge', 'aww'), (123, 'sge', 'hsw'), (123, 'sse', 'hsw')]
我需要计算在此列表中有多少次嵌套列表中有相同的第一项。输出应类似于
123 - 3 times, 832 - 2 times, 245 - 1 time.
我阅读了有关collections模块的信息,但不了解如何实现它以及在这里是否有用。
答案 0 :(得分:5)
只需在元组的第一项列表上使用Counter
:
from collections import Counter
lst = [(123, 'bbb', 'bcd'), (245, 'brb', 'gsh'), (832, 'sge', 'hsw'),
(832, 'sge', 'aww'), (123, 'sge', 'hsw'), (123, 'sse', 'hsw')]
Counter((tup[0] for tup in lst))
# Counter({123: 3, 245: 1, 832: 2})
(我使用了生成器表达式而不是列表,因此没有建立中间列表。)