仅用于站内搜索,没有排版格式,具体信息请跳转上方微信公众号内链接
如果你是个初学者,或者写代码有一段时间了,需要好好看一下你是否也会一样,像接下来的文章一样,错误使用Python字典。如果你也是一个资深玩家,可以一起探讨!~
不瞒你说,就连我也……但我从错误中吸取了教训,并改正了。所以今天特地总结了几个常见错误,也来阻止你。
有时人们会这样做来检查密钥是否存在:
我知道这可行……但我觉得没必要。我们可以用更好的方法来做这件事。
我们可以使用.get():
现在,我们的代码看起来更简洁了。我们不需要额外的if-else检查。
许多人习惯用这样的循环:
我知道……这个方法可行。但我们可以用更好的方法。我们可以用.items()这个来代替。
现在…如果我们进行一些字典查找,这将更具可读性并且更快。
有些初学者是这样合并词典的:
这肯定会起作用……但它会修改dict1。
除此之外,我们可以使用字典解包:
这将创建一个新的词典。它更安全,因为不会对原始词典造成意外修改
有时…人们过度使用defaultdict。
例如:
我知道……这可行。但是……这真的有必要吗?我们可以使用更好的方法,例如:
这将使我们的代码保持简单并避免任何不必要的导入。
我们应该只在真正需要的时候使用defaultdict它,比如在对值进行分组时。
我知道……字典很快。但是当我们的字典变得太大时,它的性能就会下降。
最好不要这样写:
我们可以使用生成器表达式来节省内存:
它将降低我们的内存使用量,并在我们真正需要时计算值。
你知道……初学者经常犯这个错误:
我知道……这可行。但我们有更好的方法:
这很清楚,我们不需要额外的if检查。但是这段代码有一个问题。
setdefault()总是会返回该值,即使它存在,正如我们在这段代码中看到的那样:
“name”已经存在,data但Python仍会调用。some_expensive_function()这会浪费时间。
所以最好的方法是使用.get()
如果缺少键,此方法只会调用默认值。非常简单……
通常……许多初学者会尝试像这样手动计算物品:
我知道……这行得通。但我想——我们可以做得更好。我们可以使用collections.Counter
现在,我们的代码更加清晰、更快。
如果你在写代码过程中也遇到这样的问题,或者其他比较有意思的问题,欢迎讨论。
长按👇关注-数据STUDIO-设为星标,干货速递