列表理解过程中的Python字典赋值



我有一个权限字典:

{'READ': True,  'WRITE': None, 'DELETE': False}

实际的字典有更多的键,但这对于示例来说已经足够了。我想对字典进行迭代,并将None的任何值更改为False。使用for循环可以很容易地做到这一点,但我想知道是否有一种惯用的方法可以通过列表理解来实现这一点。如果它是一个对象而不是一本字典,我会这么做:

[setattr(k, v, False) for k, v in object if v is None]

(或类似的),但我不知道在不使用dict.__setitem__ 的情况下如何做到这一点

这对解决我的问题来说并不是很重要,但我只是想知道是否有更简洁的方法可以做到

你考虑过词典理解吗:

>>> dct = {'READ': True,  'WRITE': None, 'DELETE': False}
>>> dct = {k:v if v is not None else False for k,v in dct.items()}
>>> dct
{'READ': True, 'WRITE': False, 'DELETE': False}
>>>

注意:如果您使用的是Python2.x,则应该使用dict.iteritems而不是dict.items。这样做将提高效率,因为前者返回迭代器,后者返回列表。

不要对副作用使用列表理解;在这里生成CCD_ 6值的列表没有意义。

相反,使用dict理解:

{k: False if v is None else v for k, v in object.iteritems()}

最新更新