出于某种原因,考虑到我在 Python 中不断发现的所有语法糖,以下代码对我来说感觉有点麻烦,所以我想询问是否有更好的方法:
pictures = list_of_random_pictures()
invalid_pictures = {}
for picture in pictures:
if picture_invalid(picture):
if not invalid_pictures.get(picture.album.id):
invalid_pictures[picture.album.id] = []
invalid_pictures[picture.album.id].append(picture)
所以澄清一下,我想知道是否有更易读的方法来处理上面的最后 3 行。因为我要重复 invalid_pictures[picture.album.id] 3 次,如果它完全可以避免的话,它似乎没有必要。
编辑:刚刚意识到我上面的代码会出现 KeyError,所以我修改了它来处理这个问题。
请您参考如下方法:
事实上,标准库中有一个对象可以准确处理这种情况:collections.defaultdict
它将一个类型或函数作为参数,为缺失的键生成默认值。
from collections import defaultdict
invalid_pictures = defaultdict(list)
for picture in pictures:
if picture_invalid(picture):
invalid_pictures[picture.album.id].append(picture)
