寻找最佳方法:
所以我有一个包含unicode字符串的列表,让我们调用这个listA
我有一个元组列表,每个元组包含一个unicode字符串和一个整数,让我们调用这个listB
我需要做的是在listB的元组中找到listA中的每个字符串。如果找到它,则递增该元组中的整数。
通过创建一个新的元组列表,我可以想到很多方法,但我不相信这是最好的方法。
感激地收到任何帮助
答案 0 :(得分:3)
您应该使用collections.Counter
:
>>> from collections import Counter
>>> listA = ['a', 'b', 'c', 'a', 'c']
>>> listB = [('a', 5), ('b', 10), ('c', 0)]
首先将listB
转换为Counter
对象:
>>> c = Counter(dict(listB))
>>> c
Counter({'b': 10, 'a': 5, 'c': 0})
现在使用listA
的计数更新它:
>>> c.update(listA)
>>> c
Counter({'b': 11, 'a': 7, 'c': 2})
答案 1 :(得分:0)
使用collections.Counter,你会得到结果为字典:
from collections import Counter
txt = """Looking for the best way of doing this:
So i have a list containing unicode strings, lets call this listA I
have a list of tuples, each of the tuples contains a unicoe string
and an integer...
""".split() # this gives list of words
counter = Counter(txt)
for word, count in counter.items():
print "{}: {}".format(word, count)
实际上counter.items()
为您提供了所需的元组。
计数器为您提供更多,尝试像counter.most_common()[:10]
这样的东西,玩得开心。
[编辑]当然以后您可以使用counter.update(another_list_of_words)
增加值。