我有一個列表的列表,它看起來像如何獲得特定元素的列表數量?
listOfLists = [
['a','b','c','d'],
['a','b'],
['a','c'],
['c','c','c','c']
]
我想指望它有一個特定的元素列表的數量。例如,我的輸出應該是
{'a':3,'b':2,'c':3,'d':1}
正如你所看到的,我不需要一個元素的總數。在"c"
的情況下,雖然其總數爲5,但輸出爲3,因爲它僅出現在3個列表中。
我正在使用計數器來計數。下面可以看到同樣的情況。
line_count_tags = []
for lists in lists_of_lists:
s = set()
for element in lists:
s.add(t)
lines_count_tags.append(list(s))
count = Counter([count for counts in lines_count_tags for count in counts])
所以,當我打印數量,我得到
{'a':3,'c':3,'b':2,'d':1}
我想知道如果有一個更好的方式來完成我的目標。
我在CPython 2.7.11上使用'itertools.chain'(〜40%!)獲得更快的執行速度。儘管如此,'Counter' +'itertools.chain'的執行速度比我提出的'raw'方法慢4倍。 – zwer
@zwer Eh,取決於我們正在討論的輸入大小。我的解決方案有更多的開銷,但如果您增加輸入大小,它應該更快。這就是爲什麼基準測試不是太重要:) – miradulo
的確如此,我只是對我的位置在速度方面的巨大差異感到驚訝,我不習慣「itertools」實際上表現超越,幾乎任何東西 - 它們都是通常是較慢的,但更易於閱讀的選擇:D – zwer