[英]Python dictionary assignment during list comprehension
我有這樣的權限字典:
{'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}
>>>
注意:如果使用的是Python 2.x,則應使用dict.iteritems
而不是dict.items
。 這樣做將提高效率,因為前者返回一個迭代器,而后者則返回一個列表。
不要對副作用使用列表理解; 在這里生成None
值列表None
。
相反,請使用dict理解:
{k: False if v is None else v for k, v in object.iteritems()}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.