This is the original code:
from collections import defaultdict
lis = [[1, 2], [2, 1], [3, 0], [2, 1], [1, 1]]
res = defaultdict(int)
for i, j in lis:
res[i] += j
print(res.items())
result
dict_items([(1, 2)])
dict_items([(1, 2), (2, 1)])
dict_items([(1, 2), (2, 1), (3, 0)])
dict_items([(1, 2), (2, 2), (3, 0)])
dict_items([(1, 3), (2, 2), (3, 0)])
I want to use yield to get these printed items.
from collections import defaultdict
li = [[1, 2], [2, 1], [3, 0], [2, 1], [1, 1]]
def g(lis: list):
res = defaultdict(int)
for i, j in lis:
res[i] += j
yield res.items()
print(*g(li))
but I get
dict_items([(1, 3), (2, 2), (3, 0)]) dict_items([(1, 3), (2, 2), (3, 0)]) dict_items([(1, 3), (2, 2), (3, 0)]) dict_items([(1, 3), (2, 2), (3, 0)]) dict_items([(1, 3), (2, 2), (3, 0)])