Better way to write 'assign A or if not possible - B'
本问题已经有最佳答案,请猛点这里访问。
因此,在我的代码中,我有一本字典,用来计算我以前不知道的项目:
1 2 3 4 | if a_thing not in my_dict: my_dict[a_thing] = 0 else: my_dict[a_thing] += 1 |
显然,我不能增加一个还不存在的值的条目。出于某种原因,我有一种感觉(在我还没有经验的Python大脑中),可能存在一种更为Python式的方式来实现这一点,比如说,一些构造允许将表达式的结果赋给一个事物,如果不可能,则在一个语句中赋给其他事物。
那么,在Python中是否存在类似的东西?
对于来自
1 2 3 4 5 6 7 8 9 | >>> from collections import defaultdict >>> d = defaultdict(int) >>> d['a'] += 1 >>> d defaultdict(<class 'int'>, {'a': 1}) >>> d['b'] += 1 >>> d['a'] += 1 >>> d defaultdict(<class 'int'>, {'b': 1, 'a': 2}) |
或者,由于您正在计算项目,您也可以(如注释中所述)使用计数器,它最终将为您完成所有工作:
1 2 3 | >>> d = Counter(['a', 'b', 'a', 'c', 'a', 'b', 'c']) >>> d Counter({'a': 3, 'c': 2, 'b': 2}) |
还有一些不错的奖金。如
1 2 | >>> d.most_common() [('a', 3), ('c', 2), ('b', 2)] |
现在你有一个命令来给你最常见的计数。
使用
1 2 3 4 5 6 7 | >>> d = {} >>> d['a'] = d.get('a', 0) + 1 >>> d {'a': 1} >>> d['b'] = d.get('b', 2) + 1 >>> d {'b': 3, 'a': 1} |