Have you tried just instantiating a Counter() instead ? All missing keys are considerd to be 0 in a fresh counter. So for example:
>>> c = Counter() >>> c["a"] += 1 >>> c Counter({'a': 1}) >>> c["b"] 0 works exactly this way. Which means there's no difference between what you're suggesting Counter.fromkeys(key-list-or-set, 0) should do and what Counter() actually does. (Resend because somehow gmail tried to reply to the wrong python-ideas) 2018-06-27 22:36 GMT+02:00 Abe Dillon <abedil...@gmail.com>: > Consider the following update function for conway's game of life: > > from collections import Counter > > def update(live: Set[Tuple[Integer, Integer]]): > counts = Counter.fromkeys(live, 0) + > Counter(itertools.chain(neighbors(*cell) for cell in live)) > flip = {cell for cell, count in counts.items() > if (cell in live and not 1<count<4) > or (cell not in live and count==3)} > live ^= flip > > around = frozenset(filter(any, itertools.product(range(-1,2), range(-1,2)))) > def neighbors(r: Integer, c: Integer): > return (((r+dr)%height, (c+dc)%width) for dr, dc in around) > > The problem is, Count.fromkeys isn't implemented. I propose that it work > exactly as it does for dict, otherwise it's difficult to add items to a > Counter when you want them to start off at zero or some other count. > > The best solution I came up with is to, more confusingly, count live cells > once extra and adjust the rules accordingly: > > def update(live: Set[Tuple[Integer, Integer]]): > counts = Counter(itertools.chain(live, *(neighbors(*cell) for cell in > live))) > flip = {cell for cell, count in counts.items() > if (cell in live and not 2<count<5) > or (cell not in live and count==3)} > live ^= flip > > around = frozenset(filter(any, itertools.product(range(-1,2), range(-1,2)))) > def neighbors(r: Integer, c: Integer): > return (((r+dr)%height, (c+dc)%width) for dr, dc in around) > > > > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/