python中的try与if_使用defaultdict替换python中的try和/或if语句

正如Paulo Almeida评论的那样,对于你发布的“明显”解决方案的例子是使用collections.Counter:

from collections import Counter

my_dict = Counter(iterable)

就是这样.

至于您发布的其他片段,并假设my_dict [key] = 1仅用于示例,您的一般问题是关于“如何最好地填充dict”:collections.defaultdict是同类dicts的正确选择(相同类型)所有键的值)其中类型具有默认值(数字零,空字符串,空列表…).我能想到的最常见的用例是填充列表(或集合或其他容器)的字典.

现在,当collections.Counter和collections.defaultdict都没有解决您的问题时,您有三种可能的模式:

>看看之前

>尝试/除了KeyError

> dict.setdefault(键,值)

如果您希望密钥已经存在,则try / except解决方案会更快 – try / except块设置非常快,但在引发异常时成本很高.就我而言,我不推荐它,除非你非常非常确定你现在的数据是什么以及将来会是什么样子.

“前瞻”解决方案的成本几乎不变,虽然不是免费的,但仍然相当便宜.这真是你最安全的选择.

dict.setdefault()解决方案与“前一个”解决方案具有大致相同的成本,但是你也有实现默认对象的固定成本,这通常会立即被摧毁.几年前这是一种常见的模式,但自收集起来以来,它的使用相当少,而不是说大多数都没用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值